GitLab CI:如何使用GitLab安全变量设置postgres图像

时间:2016-11-24 13:41:31

标签: postgresql continuous-integration environment-variables gitlab environment

这是我的.gitlab-ci.yml文件的一部分

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数据库名称,用户和密码。

请提前帮助,谢谢。

PS:我使用的是docker executor。

1 个答案:

答案 0 :(得分:0)

我不是一个能够复活死线的人...但我自己花了几个小时来解决这个问题,并认为其他人可能会受益......事实证明这很简单。

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

  

gitlab-ci.yml

services:
  - postgres:latest

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

配置/ database.yml的

test:
  host: postgres
  user: user
  database: test