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

Aur*_*ien 5 gitlab docker gitlab-ci gitlab-ci-runner

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

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

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

Aur*_*ien 6

所以我通过在脚本中添加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
Run Code Online (Sandbox Code Playgroud)

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


opH*_*AME 4

不是 100% 适合您的解决方案,但我们正在为此目的使用标签。

部分gitlab-ci.yml

 - docker build --pull -t $CI_REGISTRY/releases/application:$CI_COMMIT_TAG .
 - docker push $CI_REGISTRY/releases/application:$CI_COMMIT_TAG
Run Code Online (Sandbox Code Playgroud)

因此,每次我们推送新标签时,都会构建一个带有版本号的新 docker 镜像。您可以通过以下方式限制这些步骤.gitlab-ci.yml

  only:
    - tags
    - /^my-release-.*$/
Run Code Online (Sandbox Code Playgroud)

现在只推送带有“my-release-xxx”的标签。