在docker-compose.yaml中使用gitlab ci默认变量

在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

我想用默认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
  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