el error de gitlab ci no pudo traducir el nombre de host "postgres" a la dirección: el nombre no se resuelve

8

Utilizo gitlab-ci en mi aplicación de rieles, funcionó correctamente hasta ayer pero no pasa debido a:

rake aborted!
PG::ConnectionBad: could not translate host name "postgres" to address: Name does not resolve
/usr/local/bundle/gems/pg-1.1.4/lib/pg.rb:56:in `initialize'
/usr/local/bundle/gems/pg-1.1.4/lib/pg.rb:56:in `new'
/usr/local/bundle/gems/pg-1.1.4/lib/pg.rb:56:in `connect'
....
Tasks: TOP => db:schema:load => db:check_protected_environments

.gitlab-ci.yml:

rspec:
  stage: test
  services:
    - postgres:10
  variables:
    DATABASE_URL: "postgresql://postgres:postgres@postgres:5432/$POSTGRES_DB"
    POSTGRES_DB: db_test
    RAILS_ENV: test
  before_script:
    - ruby -v
  script:
    - cp config/application.sample.yml config/application.yml
    - cp config/database.sample.yml config/database.yml
    - bundle exec rake db:schema:load
    - bundle exec rspec spec

Parece que no puede encontrar el servicio postgres ejecutándose o, por alguna razón, el servicio de la base de datos no se está ejecutando correctamente, supongo que algunas partes internas han cambiado en gitlab-ci.

Alireza mohagheghi
fuente
Experimentando el mismo problema con la aplicación django también. Definitivamente algo interno cambió.
Ojas Kale

Respuestas:

9

EDITAR: Este fue un cambio previsto en las imágenes, ahora debe establecer una contraseña o configurar más:

Si sabe que quiere ser inseguro (es decir, cualquiera puede conectarse sin una contraseña desde cualquier lugar), entonces POSTGRES_HOST_AUTH_METHOD = confianza es la forma en que opta por eso.


Esto parece haberse introducido cuando las imágenes de la ventana acoplable se actualizaron a las nuevas versiones .

En su lugar, puede extraer la imagen 10.11 para evitar este problema por el momento:

services:
- postgres:10.11

No estoy seguro de por qué sucede esto, pero estamos experimentando lo mismo desde la última actualización de la imagen del acoplador . He encontrado que este también es el caso al pasar de 12.1 a 12.2.

brxck
fuente
3

postgres tiene dos nombres de variables de entorno requeridos POSTGRES_USERy POSTGRES_PASSWORDsi no los proporciona, el contenedor no se ejecutará.

documentación de gitlab-ci sobre servicios

moe zarrinfam
fuente
1
Su respuesta también es correcta, muchas gracias.
Alireza mohagheghi