1

这是我.gitlab-ci.yml文件的一部分GitLab CI:如何设置Postgres的图像使用GitLab安全变量

image: ruby:2.3.1 

services: 
    - postgres:latest 
    - mysql:latest 
... 
variables: 
    MYSQL_RANDOM_ROOT_PASSWORD: "1" 
... 

所有Postgres的变量

  • POSTGRES_DB
  • POSTGRES_USER
  • POSTGRES_PASSWORD

被指定为GitLab安全变量。但是,当管道运行出现以下错误:

ActiveRecord::NoDatabaseError: FATAL: role "runner" does not exist 

如果我通过.gitlab-ci.yml一切variables部分设置这些变量工作得很好。

所以看起来像这些变量通过GitLab设置安全变量时设置不正确,postgres图像不使用它们。

我的目标是从.gitlab-ci.yml中的variables部分删除postgres db名称,用户名和密码。

请帮助,在此先感谢。 PS:我使用docker执行程序。

回答

0

我不是一个能够恢复死亡线程的人......但我自己在这个问题上花了几个小时,并且认为其他人可能会受益......结果很简单。

Gitlab-CI不喜欢一个空白的用户名,所以我必须明确地设置:

gitlab-ci.yml

services: 
    - postgres:latest 

variables: 
    POSTGRES_DB: test 
    POSTGRES_USER: user 
    POSTGRES_PASSWORD: "" 

config/database.yml

test: 
    host: postgres 
    user: user 
    database: test