我想为我的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.4
和redis:5.0.1
服务以实现其功能。
编辑:变量为MONGODB_URI="mongodb://mongo:27017/aics"
和REDIS_CLIENT_HOST: "redis"
。这些对于正在测试的应用没有意义,但对于myprivaterepo
图像则没有意义,否则测试阶段将失败。
答案 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,他知道何时实施。