在 gitlab 管道中使用 semver 或时间戳
Posted
技术标签:
【中文标题】在 gitlab 管道中使用 semver 或时间戳【英文标题】:Use semver or a timestamp in gitlab piplelines 【发布时间】:2018-03-30 08:47:16 【问题描述】:我正在使用 GitLab 管道,并在 .gitlab-ci.yml
文件中定义了我的构建定义。
我正在使用它来构建 docker 容器。
简单的问题。有没有办法可以使用来自 gitlab 的 semver 或时间戳标记我的 docker 容器。
内置变量似乎没有给我太多的工作。
在 Windows 上,我之前可以在 powershell 中使用GitVersion
,它获取 semver 标签并将其放入一个变量中,您可以在其余的构建过程中使用。
如果我不能这样做,是否可以从操作系统获取时间戳并在 yml 文件中使用它?
【问题讨论】:
【参考方案1】:您可以像这样在.gitlab-ci.yml
中使用时间戳(取自我们自己创建<year>.<month>
标签和发布的用法:
job-1:
script:
- export VERSION=$(date +%y.%m)
- docker build -t myregistry/project/image:$VERSION
这会产生一个图像标签,如:myregistry/project/image:17.10
您可以使用date +%s
代替date +%y.%m
作为unixtimestamp。
根据您的 (git) 流程,您还可以使用 Gitlab CI env vars 提供的分支蛞蝓
【讨论】:
FORMAT 控制输出。解释的序列是:man7.org/linux/man-pages/man1/date.1.html【参考方案2】:关于时间戳,另一种方法是使用与当前管道关联的现有变量。
见GitLab 13.10(2021 年 3 月)
用于作业开始和管道创建时间戳的预定义 CI/CD 变量
以前,如果您想参考工作开始的确切日期和时间 或创建了管道,您需要在脚本中检索这些时间戳。 现在,通过使用
CI_JOB_STARTED_AT
和CI_PIPELINE_CREATED_AT
,以 ISO 8601 格式和 UTC 时区提供。感谢@Winkies 的贡献!
参见Documentation 和Issue。
很遗憾,这个变量不能直接用作图像标签。如referenced implementation issue 中所见,此变量的输出类似于2021-03-18T04:45:29Z
。直接使用,你的图片会看起来像myimage:2021-03-18T04:45:29Z
,这是无效的。
【讨论】:
以上是关于在 gitlab 管道中使用 semver 或时间戳的主要内容,如果未能解决你的问题,请参考以下文章
仅当 git 标签不以字符串“Release”或“Test”开头时才在 Gitlab CI 中启动管道