在 .gitlab-ci.yml 中获取最新标签以进行 Docker 构建

Nov*_*ovo 6 gitlab docker gitlab-ci gitlab-ci-runner

我想在构建 Docker 映像时添加一个标签,到目前为止我正在这样做,但我不知道如何获取正在部署的存储库上的最新标签。

docker build -t company/app .
Run Code Online (Sandbox Code Playgroud)

我的目标 docker build -t company/app:$LATEST_TAG_IN_REPO? .

ren*_*tze 11

由于您正在寻找“最新”的 git 标签,它是您可能想要使用的当前构建提交的祖先

git describe --tags --abbrev=0
Run Code Online (Sandbox Code Playgroud)

获取并使用它,例如:

docker build -t company/app:$(git describe --tags --abbrev=0) .
Run Code Online (Sandbox Code Playgroud)

阅读此处了解更多细节git describe

  • 这只获取带注释的标签。即使是轻量级的,也需要使用 git describe --tags --abbrev=0 来获取标签。 (2认同)

Akn*_*sis 5

您可以尝试使用$CI_COMMIT_TAG$CI_COMMIT_REF_NAME,这是构建期间可访问的预定义变量的一部分。

如果您想在构建步骤中查看所有可用的环境变量是什么,这应该作为您的工作之一:

script:
    - env
Run Code Online (Sandbox Code Playgroud)

  • `$CI_COMMIT_TAG` 仅在构建用于标记时才非空。如果当前构建的提交没有被标记,它将是空的。`$CI_COMMIT_REF_NAME` 同样只是标记,如果它是标记的构建,否则就是分支名称。 (3认同)
  • reefritze 是的,我必须添加`only: - tags` (2认同)