使用 yaml 在 Gitlab 中用版本标记 Docker 图像

Tagging a Docker image with Version in Gitlab with yaml

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

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

我找到了构建 ID 的标准变量 CI_JOB_ID。但是我需要一种流畅的方式来管理我的版本号..

不是 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:
    - tags
    - /^my-release-.*$/

现在只推送带有 "my-release-x.x.x" 的标签。

所以我通过在我的脚本中添加一个 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

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