gitlab-ci:在管道中向自定义docker映像提供环境变量

时间:2018-12-18 16:26:14

标签: gitlab-ci

我想为我的gitlab-ci设置一个测试阶段,该阶段取决于自定义docker映像。我想知道如何为它提供一些配置(例如将env变量设置为提供.env文件),以使自定义映像正常运行,从而实现该阶段。 当前配置:

test_job:
  only:
  refs:
    - master
    - merge_requests
    - web
stage: test
services:
  - mongo:4.0.4
  - redis:5.0.1
  - registry.gitlab.com/myteam/myprivaterepo:latest 
variables:
  - PORT=3000
  - SERVER_HOST=myprivaterepo
  - SERVER_PORT=9090
script: npm test

我想为myprivaterepo docker镜像提供环境变量,该镜像连接到mongo:4.0.4redis:5.0.1服务以实现其功能。

编辑:变量为MONGODB_URI="mongodb://mongo:27017/aics"REDIS_CLIENT_HOST: "redis"。这些对于正在测试的应用没有意义,但对于myprivaterepo图像则没有意义,否则测试阶段将失败。

1 个答案:

答案 0 :(得分:0)

我知道了。就像在yaml的variables:部分中添加环境变量一样简单。这对我有用:-

test_job:
only:
refs:
  - master
  - merge_requests
  - web
stage: test
services:
  - mongo:4.0.4
  - redis:5.0.1
  - name: registry.gitlab.com/myteam/myprivaterepo:latest
    alias: myprivaterepo
variables:
  - MYPRIVATEREPO_PORT: 9090 # Had to modify image to use this variable
  - MONGODB_URI: mongodb://mongo:27017/aics
  - REDIS_CLIENT_HOST: redis
  - PORT: 3000 # for app being tested
  - SERVER_HOST: myprivaterepo
  - SERVER_PORT: 9090
script: npm test

这些变量似乎适用于所有服务。

注意:有一个问题-您不能使用相同环境变量名称的2张图像。

就像,我最初在PORT=????和此应用程序中都将myprivaterepo用作环境变量,因此会弹出错误提示EADDRINUSE。所以我必须更新myprivaterepo才能使用MYPRIVATEREPO_PORT

在Gitlab-ce中提出了一个ticket,他知道何时实施。