docker - 在 yaml 中在 Gitlab 中使用自动递增的全局版本标记 Docker 映像
问题描述
我目前正在研究 Gitlab CI。我想在我的 YAML 文件中添加一种方法来使用按以下方式组成的版本号标记我的 docker 图像: MajorVersion.Minorversion.AutoincrementedGlobalversionNumber
我想在每次部署时自动递增全局定义的变量“AutoincrementedGlobalversionNumber”。
我使用了 CI_PIPELINE_IID,但是它会随着每个管道请求而不断增加,我需要一些东西来保持我可以跟踪的版本,并且它应该只在我打包和部署时增加。
variables:
CI_VERSION: "1.0.${CI_PIPELINE_IID}"
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 variables执行此操作,但可能有一种解决方法(未经测试):
使用以下内容获取注册表 ID:
$ registry_id=$(curl -s -XGET --header "PRIVATE-TOKEN: $TOKEN" "https://gitlab.com/$PROJECT_PATH/container_registry.json" | jq '.[].id')
查询表示注册表获取名称:
curl -s -XGET --header "PRIVATE-TOKEN: $TOKEN" "https://gitlab.com/$PROJECT_PATH/registry/repository/$registry_id/tags?format=json" | jq
例如返回以下内容,您可以 grep 名称
GlobalVersionNumber
:[ { "name": "latest", "location": "registry.gitlab.com/mwasilewski/helm:latest", "revision": "85a403337a56e9e6409dfb8185bf9aa5c2135f9a437bd75da82d27471c71feb4", "short_revision": "85a403337", "total_size": 152246865, "created_at": "2016-12-11T08:31:30.126+00:00", "destroy_path": "/mwasilewski/helm/registry/repository/31074/tags/latest" } ]
继续你的 Docker 构建和推送,在增加
GlobalVersionNumber
你回来之后。
注意:这假设您使用的是GitLab 的 Container Registry
资源:
推荐阅读
- wijmo - 如何为wijmo中的嵌套子行添加CssClass
- python - 运行时错误 ValueError: int() 以 10 为底的无效文字:'2 3 6 6 5'
- mysql - 不小心暴露了端口?
- python - 如何解决“pip install pygame”问题?
- c++ - 将带有 DST 的时间字符串转换为 UTC 时间戳
- reactjs - onSubmit 在每次更改时触发,基本形式没有
- python - manage.py 测试:错误:参数-v/--verbosity:预期一个参数
- python - Matplotlib 动画更新 X 轴限制不起作用
- python - 如何删除图像中不需要的部分,然后使用 Python 创建一个新的小图像?
- ti-basic - 如何防止 TI-84 上的程序被转移到另一个计算器?