使用 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
它工作正常,现在我需要找到一种方法来保留最后一个版本的十个(例如)。
我目前正在 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
它工作正常,现在我需要找到一种方法来保留最后一个版本的十个(例如)。