如何验证 CI 工件保留期并报告现有工件过期?

How can I verify the CI artifact retention period and report on existing artifact expiration?

在gitlab-ci文件中,artifact retention可以用expire_in, and if no expiration is given then git defaults to 30 days, unless overridden or the artifact was generated before June 22, 2020

设置

我正在做一个项目来统一我们的管道配置,但我找不到在哪里可以查看我们的工件的到期日期。在各个管道步骤上,有一条消息说明过期时间,但我找不到如何查看整个项目或组的消息。

令我惊讶的是,我在 Git 文档中找不到任何有关如何查看或报告此内容的内容。

有人对如何检查项目或组的工件过期时间有什么建议吗?

我们可以使用项目 API https://docs.gitlab.com/ee/api/jobs.html#list-project-jobs

检索项目的所有作业的元数据
GET /projects/:id/jobs

由于在您的情况下您需要到期日期的信息,我们还将使用 jq 命令来查询所需的信息

命令:

curl -s  --header "PRIVATE-TOKEN: <access_token>" "https://gitlab.com/api/v4/projects/<project_id>/jobs?per_page=10000000" |  jq '.[] | select (.artifacts[].file_type=="archive") |"JobId=\(.id) JobName=\(.name) JobCreationTime=\(.created_at) ArtifactExpirationDate=\(.artifacts_expire_at)"'

输出将包含特定项目的工作的工作ID、名称、创建时间和工件到期日期,例如

"JobId=2030732177 JobName=docker-build-job JobCreationTime=2022-01-29T09:55:15.677Z ArtifactExpirationDate=2022-02-28T09:55:32.861Z"
"JobId=2030732176 JobName=build-maven3-job JobCreationTime=2022-01-29T09:56:51.158Z ArtifactExpirationDate=2022-02-28T09:57:08.725Z"
"JobId=2030532173 JobName=docker-build-job JobCreationTime=2022-01-29T09:55:15.677Z ArtifactExpirationDate=2022-02-28T09:55:32.861Z"

注意: per_page 必须是一个非常大的数字才能检索所有作业