在docker-compose.yaml中使用gitlab ci默认变量
我想用默认git变量为docker映像标记分支名称在docker-compose.yaml中使用gitlab ci默认变量,docker-compose,gitlab-ci,Docker Compose,Gitlab Ci,我想用默认git变量为docker映像标记分支名称CI\u COMMIT\u branch 但是当我运行代码时,CI\u COMMIT\u BRANCH的值变成一个空字符串,因此docker映像被标记为\u service1,而没有分支名称 .gitlab-ci.yml Tag Images: stage: push images script: - sudo docker-compose build Tag Images: stage: push images bef
CI\u COMMIT\u branch
但是当我运行代码时,CI\u COMMIT\u BRANCH
的值变成一个空字符串,因此docker映像被标记为\u service1
,而没有分支名称
.gitlab-ci.yml
Tag Images:
stage: push images
script:
- sudo docker-compose build
Tag Images:
stage: push images
before_script:
- echo 'BRANCH_NAME='$CI_COMMIT_BRANCH >> .env #This command will create .env if not exists
script:
- sudo docker-compose build
docker-compose.yaml
version: '2.1'
services:
service1:
build: ./service1
image: service1:${CI_COMMIT_BRANCH}_service1
version: '2.1'
services:
service1:
build: ./service1
image: service1:${BRANCH_NAME}_service1
将变量传递给docker compose
你可以:
- 使用
-e
- 或者创建包含声明变量的
文件,并使用env
--env file
.gitlab ci.yml中的变量
此外,您还可以尝试在'gitlab ci.yml'的脚本之前导出变量:
before_script:
- export IMAGE_NAME=service1:${CI_COMMIT_BRANCH}_service1
docker compose.yml
:
version: '2.1'
services:
service1:
build: ./service1
image: ${IMAGE_NAME}
查看,我不认为CI\u COMMIT\u分支
是在您的场景中使用的正确变量,因为提交分支的名称是“仅在构建分支时出现”。(我猜这是\u service1
docker image标记的原因)
也许,您可以使用CI\u COMMIT\u REF\u NAME
。通过将变量动态添加到.env文件中来解决此问题
.gitlab-ci.yml
Tag Images:
stage: push images
script:
- sudo docker-compose build
Tag Images:
stage: push images
before_script:
- echo 'BRANCH_NAME='$CI_COMMIT_BRANCH >> .env #This command will create .env if not exists
script:
- sudo docker-compose build
docker-compose.yaml
version: '2.1'
services:
service1:
build: ./service1
image: service1:${CI_COMMIT_BRANCH}_service1
version: '2.1'
services:
service1:
build: ./service1
image: service1:${BRANCH_NAME}_service1
我尝试了建议的解决方案,但没有任何帮助,请建议是否需要更新docker compose版本。它添加在Gitlab 12.6版参考中:您想使用$CI_COMMIT_REF_SLUG而不是$CI_COMMIT_BRANCH