在gitlab-ci.yml中有条件地标记具有不同名称的docker映像

时间:2019-04-12 21:14:58

标签: docker continuous-integration gitlab gitlab-ci-runner

我有一个.gitlab-ci.yml文件,该文件当前在所有分支上的每次提交时都使用latest标签将Docker映像发布到Docker Hub。

我想更新.gitlab-ci.yml,以便根据提交所在的分支对Docker映像进行不同的标记。

我想要一个latest-dev标签用于功能分支上的提交,一个latest标签用于提交/合并到主控。

这是我的`.gitlab-ci.yml'中的当前定义:

.publish-image: &publish_image
  script:
    - if [ "${REVIEW_APP}" == "true" ]; then DOCKER_IMAGE_TAG="${GITLAB_USER_LOGIN}-${CI_COMMIT_SHA:0:8}"; else DOCKER_IMAGE_TAG=${CI_COMMIT_SHA:0:8}; fi
    - echo $DOCKER_REGISTRY_PASSWORD | docker login -u $DOCKER_REGISTRY_USER --password-stdin 
    - echo Publishing the docker image for commit-${CI_COMMIT_SHA:0:8} by $GITLAB_USER_LOGIN with tag $DOCKER_IMAGE_TAG
    - echo Bundling without ${BUILD_WITHOUT}
    - docker build --build-arg BUILD_WITHOUT="${BUILD_WITHOUT}" --pull -t $DOCKER_REGISTRY_IMAGE:$DOCKER_IMAGE_TAG -t $DOCKER_REGISTRY_IMAGE:latest --no-cache .
    - docker push $DOCKER_REGISTRY_IMAGE:$DOCKER_IMAGE_TAG
    - docker push $DOCKER_REGISTRY_IMAGE:latest

publish-for-review:
  <<: *publish_image
  stage: publish-for-review
  variables:
    REVIEW_APP: "true"
    BUILD_WITHOUT: "test"
  only:
  - branches
  except:
  - master

onlyexcept指定分支,但是我看不到如何根据分支有条件地指定标签名称。

0 个答案:

没有答案