之前通过 gitlab cli 删除了以前的的 pipeline,详见博问 gitlab 中如何删除一个项目的所有 artifacts
现在还残留一些不知道为什么没有和 pipeline 一起删除的 job,请问如何删除?
在 GitLab 中,虽然使用 CLI 删除了旧的 pipeline,但有时与之相关的 job 或 artifacts 可能没有被自动删除。如果你想手动删除剩余的 job,下面是一些步骤和方法:
如果你想删除特定的 job,可以通过以下步骤在 GitLab 的 UI 中完成:
如果你想通过 API 删除 job,你可以使用 GitLab API 来实现。你需要知道:
可以使用以下方法来获取并删除 job:
curl --header "PRIVATE-TOKEN: <your_token>" "https://<gitlab_instance>/api/v4/projects/<project_id>/jobs"
curl --request DELETE --header "PRIVATE-TOKEN: <your_token>" "https://<gitlab_instance>/api/v4/projects/<project_id>/jobs/<job_id>"
如果你想删除所有过期的 jobs,你可以考虑使用以下 API:
curl --request DELETE --header "PRIVATE-TOKEN: <your_token>" "https://<gitlab_instance>/api/v4/projects/<project_id>/jobs"
如果相关的 artifacts 也没有删除,可以通过 Settings -> CI / CD -> Cleanup artifacts
对它们进行清理。
如果以上方法仍然无法删除你想要的 job,您可以进一步检查 GitLab 的版本以及相关的功能限制。如果有其他疑问,可以继续讨论!
只有「列出项目的所有 jobs」api 是对的,「根据 job ID 删除特定 job」与「删除所有过期的 Jobs (如果需要)」这2个 api 都返回
{"error":"404 Not Found"}
@dudu: 关于 GitLab 中的作业(Jobs)管理,以下是一些正确的信息和方法:
在 GitLab 中,作业是由 CI/CD 流水线触发的。要有效地管理和删除这些作业,可以采取以下步骤:
列出项目中的所有作业:
确保首先获取项目中的所有作业,以确认哪些作业是你要处理的。
GET /projects/:id/jobs
:id
为你的项目 ID。删除作业:
由于 GitLab 不直接支持按作业 ID 删除作业,因此你无法通过 API 删除作业本身。GitLab 并没有提供直接删除单个作业的功能。你只能删除和管理作业的工件(artifacts)。
为了处理残留的作业,最常用的方法是取消或重新运行它们,确保它们不再占用资源。如果你想清理作业的工件(artifacts),你可以使用以下 API:
删除作业工件(artifacts):
DELETE /projects/:id/jobs/:job_id/artifacts
这个 API会删除指定作业的工件。你需要确保你使用的是正确的作业 ID。
.gitlab-ci.yml
中设置工件的过期策略,以帮助管理存储,自动删除已过期的工件。若想删除所有已过期或不再需要的工件,可以:
使用 API 查询工件信息:
可以使用以下命令查看所有项目工件的状态:
GET /projects/:id/jobs/artifacts
在 UI 上手动管理:
在项目的 CI/CD > Jobs 页面中,所有作业均可以监控和管理。
如果 GitLab API 提供的功能和文档中存在差异,建议查看 GitLab 的 官方 API 文档 以获取最新的 API 信息和功能支持。有关清理作业或工件的具体策略,可以全球依赖于项目的实际需求。
如果你还有其他问题或者需要进一步的帮助,请告诉我!
可以通过下面的 api 删除单个的 job
curl --request POST --header "PRIVATE-TOKEN: <your_token>" "https://<gitlab_instance>/api/v4/projects/<project_id>/jobs/<job_id>/erase"
但操作时遇到 403 错误
{"message":"403 Forbidden"}