在 gitlab 管道中使用 semver 或时间戳

Use semver or a timestamp in gitlab piplelines

我正在使用 GitLab 管道并在 .gitlab-ci.yml 文件中定义了我的构建定义。

我正在使用它构建 docker 个容器。

简单的问题。有没有一种方法可以用来自 gitlab 的 semver 或时间戳标记我的 docker 容器。

内置变量似乎没有太多用处。

在 Windows 之前,我已经能够在 powershell 中使用 GitVersion,它获取 semver 标签并将其放入一个变量中,您可以在其余的构建过程中使用。

如果我做不到,是否可以从 OS 获取时间戳并在 yml 文件中使用它?

您可以像这样在 .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

提供的 branch-slugs

关于时间戳,另一种方法是使用与当前管道关联的现有变量。

参见 GitLab 13.10(2021 年 3 月)

Predefined CI/CD variables for job start and pipeline created timestamps

Previously, if you wanted to reference the exact date and time when a job started or a pipeline was created, you needed to retrieve these timestamps in your scripts. Now they are readily available as predefined CI/CD variables by using CI_JOB_STARTED_AT and CI_PIPELINE_CREATED_AT, provided in the ISO 8601 format and UTC time zone.

Thanks to @Winkies for this contribution!

See Documentation and Issue.

遗憾的是,此变量不能直接用作图像标签。正如在 referenced implementation issue 中看到的,此变量的输出类似于 2021-03-18T04:45:29Z。直接使用,您的图像看起来像 myimage:2021-03-18T04:45:29Z,这是无效的。