Travis CI не подключается к PostgreSQL 11.2

#ruby-on-rails #travis-ci #postgresql-11

#ruby-на-рельсах #travis-ci #postgresql-11 #ruby-on-rails

Вопрос:

У меня возникли проблемы со сборкой приложения Rails для базы данных PostgreSQL 11.2.

Вот .travis.yml файл:

 rvm:
  - 2.6.1
dist: xenial
services:
  - postgresql
addons:
  postgresql: "11.2"
  apt:
    packages:
      - postgresql-11
before_script:
  - psql --version
  - psql -c 'create database kpdotcom_test;' -U postgres
  - cp config/database.yml.travis config/database.yml
  - bundle exec rake db:schema:load
  

Однако сборка завершается с ошибкой:

введите описание изображения здесь

Любые предложения будут с благодарностью приняты.

Ответ №1:

У меня тоже была эта проблема. Вот конфигурационный файл, который исправил это для меня:

Этот скрипт:

  1. Завершает работу всех 9.* Базы данных PostgreSQL
  2. устанавливается 11.2 (на момент написания этой статьи)
  3. копирует информацию аутентификации из старой конфигурации 9.6
  4. создает роль с именем «travis»
 language: ruby
rvm: 2.6.2
before_install:
  - sudo apt-get update
  - sudo apt-get --yes remove postgresql*
  - sudo apt-get install -y postgresql-11 postgresql-client-11
  - sudo cp /etc/postgresql/{9.6,11}/main/pg_hba.conf
  - sudo service postgresql restart 11  
before_script:
  - psql --version
  - psql -c 'CREATE DATABASE {{your database name here}};' -U postgres
  - psql -c 'CREATE ROLE travis SUPERUSER LOGIN CREATEDB;' -U postgres
  - cp config/database.yml.travis config/database.yml
script: bundle exec rake spec
services:
  - postgresql
addons:
  postgresql: "11.2"
  

Ответ №2:

Ответ Джонатана Уилера мне очень помог. Однако мне нужно было установить postgres 11 в focal дистрибутив, тогда как в первоначальном post используется xenial .

Оказалось, что мне пришлось немного подправить конфигурационный файл travis. Я подумал, что это может помочь любому, кто пытается установить postgres 11 на focal . В принципе, вам нужно:

  • импортируйте ключ подписи репозитория ( wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - )
  • добавить содержимое репозитория в систему Ubuntu 20.04 ( echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/postgresql-pgdg.list )
  • установите PostgreSQL 11 ( sudo apt -y update amp;amp; sudo apt -y install postgresql-11 postgresql-client-11 )
  • измените файлы конфигурации pg:
    • измените порт ( port = 5433/port = 5432 )
    • облегчите доступ пользователей к postgres ( peer/trust )
  • измените права доступа sudo chmod 750 /var/lib/postgresql/11/main

Вот сценарий:

 before_install:
  - sudo apt -y remove postgresql*
  - wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
  - echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/postgresql-pgdg.list
  - sudo apt -y update
  - sudo apt -y install postgresql-11 postgresql-client-11
  - sudo sed -i 's/port = 5433/port = 5432/' /etc/postgresql/11/main/postgresql.conf
  - sudo sed -i 's/local   all             postgres                                peer/local   all             postgres                                trust/' /etc/postgresql/11/main/pg_hba.conf
  - sudo chmod 750 /var/lib/postgresql/11/main
  - sudo service postgresql restart 11
  

Я мог бы оставить before_script так, как это было дано Джонатаном Уилером.

Если вы не уверены, вы можете проверить порт postgres, добавив временную строку в скрипт: echo $(sudo cat /etc/postgresql/11/main/pg_hba.conf) и выполнить поиск port = 543 в журналах.

То же самое для метода аутентификации postgres: echo $(sudo cat /etc/postgresql/11/main/postgresql.conf)