GitLab API:按名称从管道中过滤作业

Posted

技术标签:

【中文标题】GitLab API:按名称从管道中过滤作业【英文标题】:GitLab API: filter jobs from pipeline by its name 【发布时间】:2021-12-23 18:40:35 【问题描述】:

我在 GitLab API 上有一个 URL,它具有以下结构: gitlab.com/api/v4/projects/:proj_id/pipelines/:pipeline_id/jobs

现在我只想得到一个下一个名字的工作:“rpm:build”。

gitlab.com/.../jobs/?name="rpm:build" 之类的请求会将整批作业返回给我。

那么我应该怎么做才能只得到一份工作呢?

【问题讨论】:

【参考方案1】:

你能用管道连接到 JQ 吗?如食谱所述:

https://github.com/stedolan/jq/wiki/Cookbook#filter-objects-based-on-the-contents-of-a-key

类似这样的:

curl -L gitlab.com/api/v4/projects/:proj_id/pipelines/:pipeline_id/jobs \
| jq -c '.[] | select(.name | contains("rpm:build"))'

【讨论】:

感谢您的回答!不幸的是,我得到了相同的结果,包括所有工作中的所有id(没有过滤器)。 哦,也许我误会了。所以我猜你只需要第一个发现? 您可以像这样过滤列表:jq -c 'first(.[] | select(.name | contains("rpm:build")))' 您也可以将first 替换为nth(n)last

以上是关于GitLab API:按名称从管道中过滤作业的主要内容,如果未能解决你的问题,请参考以下文章

如果前一个管道中正在运行相同的作业,如何等待 GitLab 作业?

在 gitlab 中触发命名管道

GitLab CI 使用 API 获取预定义变量?

如何在 GitLab CI 的管道中将变量的值从一个作业传递到下一个作业?

我如何收集gitlab管道中所有作业的日志?

如何在 gitlab 中触发特定作业