更改时间戳变量格式或进行替换

Change timestamp variable format or do replacement

我目前正在设置 ci/cd 用于推送 nuget 包的管道。

我想使用内置的 CI_COMMIT_TIMESTAMP 作为版本后缀,但是它的 ISO 8601 格式对此无效。

示例 ISO 8601 (UTC):2022-03-15T18:34:43Z

至少需要替换冒号。

是否可以采用不同的格式或进行某种文本替换?

您无法更改变量的显示方式,但可以在作业中重新设置值的格式。

unix date 命令可以做到这一点。例如,您可以将任何有效格式声明为所需的输出格式。

MY_JOB:
  variables:
    DESIRED_FORMAT: "%Y-%m-%dT%H-%M-%S"
  script:
    - nuget_format="$(date -d "$CI_COMMIT_TIMESTAMP" +"$DESIRED_FORMAT")"
    - echo "$nuget_format" 

这将有如下输出:

2022-03-15T23-43-17

另一种方法是使用 sed 将出现的 : 替换为 -

script:
  - nuget_time_format="$(sed "s/:/-/g" <<< $CI_COMMIT_TIMESTAMP)"
  - echo "$nuget_time_format"