我将Gitlab用于存储库和ci / cd。 当前正在尝试建立从构建阶段创建docker映像的管道。 我看过的所有示例都有一个简单的图片命名,例如使用分支(主机)
我的问题是,是否要基于存储库中的当前标记来标记图像,我该怎么做? 我想我可以使用Gitlab跑步者变量,但看不到我们的人
答案 0 :(得分:3)
Gitlab CI中有很多预定义的变量。我认为您正在寻找CI_COMMIT_TAG
。
因此您可以通过以下方式使用它:
docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG
所以图像看起来像registry.example.com/group/project:tag
答案 1 :(得分:2)
与shell command is not possible yet在.gitlab-ci.yml
中具有变量一样,您可以编辑get the current tag的构建脚本并在该脚本中构建图像
两个文件都位于项目的根目录:
build.sh
:
#!/bin/sh
IMAGE="$CI_REGISTRY/$CI_PROJECT_PATH:$CI_BUILD_REF_NAME-$(git describe --abbrev=0 --tags)"
docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY
docker build --pull -t $IMAGE .
docker push $IMAGE
.gitlab-ci.yml
:
image: docker:latest
services:
- docker:dind
stages:
- release
release:
stage: release
script:
- apk update && apk add git
- ./build.sh