PG :: ConnectionBad на Github Действия для Rails - PullRequest
0 голосов
/ 23 марта 2020

У меня сейчас проблема, и я не знаю, как ее решить в контексте действий Github.

Боковой контекст: Я следую учебнику при настройке Rails- Postgres с действиями GH для CI.

Обычно, когда я сталкиваюсь с этой проблемой в среде разработчика, я удаляю файл postmaster.pid. Но здесь, поскольку я нахожусь в тестовой среде в действиях GH, я не уверен, как ее решить. Я уже пытался делать, как я это сделал в dev env, к сожалению, это не сработало.

Решения, которые я пробовал:

  • rm /usr/local/var/postgres/postmaster.pid

  • Изменение записи ports в postgres в рабочем процессе

Мой рабочий процесс действий GH:

name: Test

on: [pull_request]

jobs:
  build:
    runs-on: ubuntu-latest

    services:
      postgres:
        image: postgres:12.1
        ports:
          - 6543:6543
        options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5

    steps:
      - name: Checkout repository
        uses: actions/checkout@v2

      - name: Install Ruby version specified in `.ruby-version`
        uses: eregon/use-ruby-action@master

      - name: Install required apt packages
        run: |
          sudo apt-get -y install libpq-dev

      - name: Setup cache key and directory for gems cache
        uses: actions/cache@v1
        with:
          path: vendor/bundle
          key: ${{ runner.os }}-gem-use-ruby-${{ hashFiles('**/Gemfile.lock') }}

      - name: Read Node.js version to install from `.nvmrc`
        run: echo "##[set-output name=NVMRC;]$(cat .nvmrc)"
        id: nvm

      - name: Install required Node.js version
        uses: actions/setup-node@v1
        with:
          node-version: "${{ steps.nvm.outputs.NVMRC }}"

      - name: Get Yarn cache directory path
        id: yarn-cache
        run: echo "::set-output name=dir::$(yarn cache dir)"

      - name: Setup cache key and directory for node_modules cache
        uses: actions/cache@v1
        with:
          path: ${{ steps.yarn-cache.outputs.dir }}
          key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}

      - name: Bundle install
        run: |
          gem install bundler -v2.1.4
          bundle config path vendor/bundle
          bundle install --jobs 4 --retry 3

      - name: Yarn install
        run: yarn --frozen-lockfile

      - name: Run RSpec // ERRORS HERE
        run: |
          RUBYOPT='-W:no-deprecated -W:no-experimental' bundle exec rails db:prepare
          RUBYOPT='-W:no-deprecated -W:no-experimental' bundle exec rspec

Это прерывается по заданию Run RSpec.

Сообщение об ошибке:

PG::ConnectionBad: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

Спасибо всем за помощь?

Ответы [ 2 ]

0 голосов
/ 23 марта 2020

Нашли исправление!

Мне нужно было добавить запись host, username и password в config/database.yml для тестовой БД

0 голосов
/ 23 марта 2020

Поскольку вы указали порт для 6543, поэтому PostgreSQL не может найти порт по умолчанию 5432.

Чтобы исправить это, укажите порт в

services:
  postgres:
    ports:
      - 5432/tcp
...