如何在GitLab CI中获取提交日期和时间

14
实际上我需要在GitLab CI中获取我的提交时间戳。 已经测试了GitLab CI变量的官方文档,链接如下: https://docs.gitlab.com/ee/ci/variables 但是这里只有以下提交变量: - CI_COMMIT_SHA 项目构建的提交版本 - CI_COMMIT_TAG 提交标签名称。仅在构建标签时存在。
是否有办法实现此功能?需要将这些值添加到变量中。我的首选方式是将其添加到变量部分。
job:
  variables:
    COMMIT_TIME: $(git_timestamp)
  script: echo $COMMIT_TIME

我乐意接受任何有帮助的建议。

3个回答

32

是的,您可以像这样获取提交时间:

job:
  script: 
    - export COMMIT_TIME=$(git show -s --format=%ct $CI_COMMIT_SHA)
    - echo $COMMIT_TIME

如果您希望在每个作业中使用COMMIT_TIME变量,请使用before_script选项:

before_script:
  - export COMMIT_TIME=$(git show -s --format=%ct $CI_COMMIT_SHA)   

job:
  script: 
    - echo $COMMIT_TIME

%ct格式会给你Unix时间戳,如果您需要其他内容,请查看此参考文献中的PRETTY_FORMATS选项。


谢谢,我会测试它。 - Jan Franta
使用 before_script 方法意味着每个作业都会计算自己的日期/时间,这可能会成为一个问题,特别是当日期很重要且流水线跨越午夜时。但是,当你查看提交时,这当然不是问题。不错! - Paul D Smith
这让我省了很多麻烦。对于那些从这里构建容器并想要从容器内部访问COMMIT_TIME变量的人,您需要在任何阶段开始之前使用上面提到的before_script:选项。然后将COMMIT_TIME: $COMMIT_TIME添加到variables:(同样是在任何阶段开始之前)。现在,您可以在容器中全局访问此变量。 - Mix Master Mike

21
从GitLab 13.4开始,你可以使用一个新的预定义变量来实现: CI_COMMIT_TIMESTAMP 数值示例:2022-01-06T01:27:22+01:00

5
以下是该变量的示例值(以便任何寻找日期格式的人不需要运行管道来获取它):2022-01-06T01:27:22+01:00 - CDuv

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接