如何在JFrog Pipelines中自动驳回前序待审批运行步骤?
在JFrog Pipelines中自动驳回前序待审批运行的方法
要实现当新运行触发时自动驳回前序待审批运行的需求,你可以借助JFrog Pipelines的REST API,在新运行的起始阶段执行清理逻辑,具体方案如下:
1. 核心逻辑
每次新运行(如运行2)启动时,先调用API查询目标Pipeline下所有处于**待审批(PENDING_APPROVAL)**状态的运行,再逐个发送驳回请求,终止这些前序运行的待审批流程。
2. 具体实现步骤
查询待审批运行
使用Pipelines的rest步骤发送GET请求,获取目标Pipeline下的待审批运行列表:
GET /pipelines/api/v1/runs?pipelineId=<你的Pipeline ID>&status=PENDING_APPROVAL
- 替换
<你的Pipeline ID>为实际Pipeline的标识符(可从Pipeline详情页获取)。 - 利用Pipelines内置的
jfrogPlatform集成自动注入认证凭证,无需手动配置token。
自动驳回待审批步骤
遍历查询到的运行ID,对每个运行发送POST请求完成驳回:
POST /pipelines/api/v1/runs/<运行ID>/approve
请求体需指定驳回状态及原因:
{ "approved": false, "comment": "新运行已触发,自动驳回前序待审批流程" }
集成到Pipeline流程
将上述逻辑封装为Pipeline的起始步骤,确保新运行触发时优先执行。示例Pipeline YAML片段:
steps: - name: fetch_pending_runs type: rest configuration: method: GET url: "${JFROG_PLATFORM_URL}/pipelines/api/v1/runs?pipelineId=your-pipeline-id&status=PENDING_APPROVAL" headers: Authorization: "Bearer ${JFROG_PLATFORM_ACCESS_TOKEN}" outputResources: - name: pending_runs_list execution: onSuccess: - foreach: ${pending_runs_list.response.body.items} do: - name: reject_pending_run type: rest configuration: method: POST url: "${JFROG_PLATFORM_URL}/pipelines/api/v1/runs/${item.id}/approve" headers: Authorization: "Bearer ${JFROG_PLATFORM_ACCESS_TOKEN}" body: | { "approved": false, "comment": "新运行触发,自动驳回前序待审批运行" }
注意事项
- 确保执行该步骤的用户拥有Pipeline运行审批权限,否则API请求会返回权限错误。
- 可添加
createdAt时间范围参数(如&createdAt[gte]=2024-01-01T00:00:00Z)过滤待审批运行,避免误处理更早的无关流程。 - 针对多分支Pipeline,需在查询参数中添加
branchName指定目标分支,确保只处理同分支的前序运行。
内容的提问来源于stack exchange,提问作者Vivek Kodira
相关产品推荐
相关产品推荐

