繁体   English   中英

Gitlab 管道 - 如何获取管道运行的日期/月份?

[英]Gitlab piepline - how to get a day/month the pipeline is running?

在 Gitlab 管道中,我必须获取管道运行的日期,例如 8 月 25 日。 然后我必须制作两个变量,并获得该月的第一天和该月的最后一个。 所以在这种情况下,它必须是变量 1 = 8 月 1 日,变量 2 = 8 月 31 日,并且我需要在管道运行时回显这些值。

我想到的方法是:

  1. 使用内置变量 CI_JOB_STARTED_AT 获取管道运行的日期/时间。
  2. 将此值导出到 Python 脚本
  1. 由于 CI_JOB_STARTED_AT 始终采用这种格式 2021-11-05T20:12:38Z,我们可以使用切片操作数据,并返回两个变量的值。
  2. 两个变量在管道运行时接收值并回显该值。

我不知道这是否是理想的方法,或者我是否可以使用管道中的脚本来做到这一点。 有人可以告诉我如何解决这个问题吗?

提前致谢

您可以将其全部封装在一个 Python 脚本中。

因此,一个简单的 CI 作业定义如下:

myjob:
  image: python:3.10
  before_script: "pip install dateutil"
  script: "./myscript.py"

以及具有以下内容的脚本:

import calendar
import os

from dateutil.parser import parse


job_start = os.environ['CI_JOB_STARTED_AT']  # or CI_PIPELINE_CREATED_AT
job_start_date = parse(job_start)

month_name = calendar.month_name[job_start_date.month]

# ref: https://stackoverflow.com/a/43663/5747944
_, last_of_month = calendar.monthrange(job_start_date.year, job_start_date.month)

# Print current day and month
print(month_name, job_start_date.day)

# print first day of the month
print(month_name, '1')

# print last day of the month
print(month_name, last_of_month)

假设 CI_JOB_STARTED_AT 中的日期为CI_JOB_STARTED_AT 2021-11-05T20:12:38Z ,则脚本中的作业 output 如下所示:

November 5
November 1
November 30

但是,请注意,作业开始时间不一定与创建管道的时间相同。 因此,您可以考虑改用变量CI_PIPELINE_CREATED_AT


附带说明一下,为什么您需要在工作中执行此操作是有问题的,因为 GitLab 本身始终存储(并在 UI 中显示)管道开始日期,并且可以通过管道 API检索它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM