代码之家  ›  专栏  ›  技术社区  ›  Harpreet

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

  •  0
  • Harpreet  · 技术社区  · 5 年前

    我想用默认的git变量标记docker镜像的分支名称 CI_COMMIT_BRANCH

    但是当我运行代码时 CI_COMMIT_BRANCH 变为空字符串,因此docker映像标记为 _service1 没有分支名称。

    .gitlab-ci.yml

    Tag Images:
      stage: push images
      script:
        - sudo docker-compose build
    

    docker-compose.yaml

    version: '2.1'
    services:
      service1:
        build: ./service1
        image: service1:${CI_COMMIT_BRANCH}_service1
    
    0 回复  |  直到 5 年前
        1
  •  3
  •   Harpreet    5 年前

    通过将变量添加到 .env 动态文件

    .gitlab-ci.yml

    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:${BRANCH_NAME}_service1
    
        2
  •  0
  •   Yasen    5 年前

    将变量传递给 docker-compose

    您可以:

    • 要么传递变量 -e

    请参阅手册 Set environment variables

    • 或创建 env 包含声明变量的文件,并将其名称传递给 --env-file

    请参阅 manual

    导出变量 .gitlab-ci.yml

    此外,你的猫试图 export 变量in before_script “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}
    
        3
  •  0
  •   Partiban    5 年前

    看着 predefined_variables ,我不认为 CI_COMMIT_BRANCH 是您场景中使用的正确变量,因为提交分支名称是“仅在构建分支时存在”。(我猜测这是导致 _service1 docker镜像标签)

    也许,你可以用 CI_COMMIT_REF_NAME 相反?