【问题标题】:How to get commit date and time on GitLab CI如何在 GitLab CI 上获取提交日期和时间
【发布时间】:2018-03-08 13:14:21
【问题描述】:

实际上,我需要在 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

我愿意接受任何有用的建议。

【问题讨论】:

    标签: gitlab-ci


    【解决方案1】:

    是的,您可以获得提交时间,如下所示:

    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 格式为您提供 unixtimestamp,如果您需要其他内容,请查看git show 上的this reference 中的 PRETTY_FORMATS。

    【讨论】:

    • 谢谢,会测试一下。
    • 不使用before_script 方法意味着每个作业都计算自己的日期/时间吗?如果日期很重要并且管道跨越午夜,这可能是一个问题。哦,当然不是因为您正在查看提交。不错!
    • 这让我省了很多麻烦。对于那些从这里构建容器并希望从容器内部访问COMMIT_TIME 变量的人,您需要在任何阶段开始之前使用上面提到的before_script: 选项。然后将COMMIT_TIME: $COMMIT_TIME 添加到variables:(也在任何阶段开始之前)。您现在可以在容器中全局访问此变量。
    【解决方案2】:

    从 GitLab 13.4 开始,您可以为此使用新的 predefined variableCI_COMMIT_TIMESTAMP

    值示例:2022-01-06T01:27:22+01:00

    【讨论】:

    • 这里是这个变量值的一个例子(这样任何寻找日期格式的人都不需要运行管道来获取它):2022-01-06T01:27:22+01:00
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-08
    • 1970-01-01
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    • 2016-10-05
    • 2019-08-11
    相关资源
    最近更新 更多