Travis CI 未连接到 PostgreSQL 11.2

Travis CI not connecting to PostgreSQL 11.2

我在为 PostgreSQL 11.2 数据库构建 Rails 应用程序时遇到问题。

这是 .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. 关闭所有 9.* postgreSQL 数据库
  2. 安装 11.2(在撰写本文时)
  3. 从旧的 9.6 配置复制身份验证信息
  4. 创建一个名为 "travis"
  5. 的角色
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"

Jonathan Wheeler 的回答对我帮助很大。但是我需要在 focal 发行版上安装 postgres 11 而最初的 post 使用 xenial.

原来我不得不稍微调整一下 travis 的配置文件。我认为这可能对任何试图在 focal 上安装 postgres 11 的人有所帮助。基本上你需要:

  • 导入存储库签名密钥(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 && 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,因为它是由 Jonathan Wheeler 提供的。

如果不确定,您可以检查 postgres 端口,在脚本中添加临时行:echo $(sudo cat /etc/postgresql/11/main/pg_hba.conf) 并在日志中搜索 port = 543

postgres 身份验证方法相同: echo $(sudo cat /etc/postgresql/11/main/postgresql.conf)