简体   繁体   English

Travis CI 未连接到 PostgreSQL 11.2

[英]Travis CI not connecting to PostgreSQL 11.2

I'm having trouble with a build of a Rails application for a PostgreSQL 11.2 database.我在为 PostgreSQL 11.2 数据库构建 Rails 应用程序时遇到问题。

Here's the .travis.yml file:这是.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

However, the build fails:但是,构建失败:

在此处输入图片说明

Any suggestions would be gratefully appreciated.任何建议将不胜感激。

I had this problem too. 我也有这个问题。 Here's the config file that fixed it for me: 这是为我修复它的配置文件:

This script: 这个脚本:

  1. Shuts down all 9.* postgreSQL databases 关闭所有9. * postgreSQL数据库
  2. installs 11.2 (at the time of this writing) 安装11.2(在撰写本文时)
  3. copies the authentication information from the old 9.6 configuration 从旧的9.6配置中复制身份验证信息
  4. creates a role called "travis" 创建一个名为“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"

Jonathan Wheeler's answer helped me a lot.乔纳森·惠勒的回答对我帮助很大。 However I needed to install postgres 11 on focal distro whereas the initial post uses xenial .但是我需要在focal发行版上安装 postgres 11 而最初的帖子使用xenial

Turned out I had to tweak a little bit travis' config file.结果我不得不稍微调整一下 travis 的配置文件。 I thought that might help anyone trying to install postgres 11 on focal .我想,这可能有助于任何人试图安装在11 Postgres的focal Basically you need to:基本上你需要:

  • import the repository signing key ( wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - )导入存储库签名密钥( wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
  • add repository contents to Ubuntu 20.04 system ( echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/postgresql-pgdg.list )将存储库内容添加到 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 )
  • install PostgreSQL 11 ( sudo apt -y update && sudo apt -y install postgresql-11 postgresql-client-11 )安装 PostgreSQL 11 ( sudo apt -y update && sudo apt -y install postgresql-11 postgresql-client-11 )
  • change pg config files:更改 pg 配置文件:
    • change port ( port = 5433/port = 5432 )更改端口( port = 5433/port = 5432
    • ease postgres user access ( peer/trust )简化 postgres 用户访问( peer/trust
  • change access rights sudo chmod 750 /var/lib/postgresql/11/main更改访问权限sudo chmod 750 /var/lib/postgresql/11/main

Here is the script:这是脚本:

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

I could keep before_script as it was given by Jonathan Wheeler.我可以保留 Jonathan Wheeler 提供的before_script

If unsure, you can check the postgres port adding a temp line in the script: echo $(sudo cat /etc/postgresql/11/main/pg_hba.conf) and search for port = 543 in the logs.如果不确定,您可以检查 postgres 端口,在脚本中添加一个临时行: echo $(sudo cat /etc/postgresql/11/main/pg_hba.conf)并在日志中搜索port = 543

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM