使用yaml在Gitlab中使用Version标记Docker映像

时间:2018-07-04 09:15:05

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

我目前正在使用Gitlab CI。 我想在我的YAML文件中添加一种方法来标记由构建步骤生成并以以下方式组成的版本号推送到我的Gitlab注册表的docker映像:MajorVersion.Minorversion.BuildNumber

我想自动增加BuildNumber,但要手动设置MajorVersion和MinorVersion。

我为构建ID找到了一个标准变量 CI_JOB_ID 。但是我需要一种平滑的方法来管理我的版本号。

2 个答案:

答案 0 :(得分:1)

不是100%的解决方案适合您,但我们为此目的使用了TAG。

gitlab-ci.yml的一部分

 - docker build --pull -t $CI_REGISTRY/releases/application:$CI_COMMIT_TAG .
 - docker push $CI_REGISTRY/releases/application:$CI_COMMIT_TAG

因此,每次我们按下一个新标签时,都会构建一个具有发行号的新docker镜像。您可以通过以下方式在gitlab-ci.yml中限制这些步骤:

  only:
    - /^my-release-.*$/

现在仅推送带有“ my-release-x.x.x”的标签。

答案 1 :(得分:0)

因此,我通过在脚本中添加 CI_VERSION 变量来做到这一点:

variables:
  CI_VERSION: "1.0.${CI_JOB_ID}"

build-master:
  stage: build
  script:
    - docker build --pull -t "$CI_REGISTRY_IMAGE" -t "$CI_REGISTRY_IMAGE:$CI_VERSION"   ./postfix
    - docker push "$CI_REGISTRY_IMAGE"
  only:
    - master

它工作正常,现在我需要找到一种方法来保持十个(例如)最后一个版本。