You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在代码仓库推送变更时取消Jfrog Pipelines的活跃运行?

代码仓库推送变更时取消活跃的Jfrog Pipelines运行实例

当然有办法,以下是几种实用的实现方式:

1. 启用触发器内置的"取消之前运行"功能

这是最简单的方式,直接在流水线的webhook触发器配置里操作:

  • 找到对应代码仓库的触发器,开启Cancel Previous Runs选项。
  • 开启后,每当新的变更触发流水线时,系统会自动取消当前分支下所有处于活跃状态(RUNNING/PENDING)的旧运行实例。
  • 注意:这个功能仅对同分支的运行生效,不同分支的活跃实例不会被影响。

2. 通过REST API自定义取消逻辑

如果需要更灵活的控制(比如跨分支取消、按特定条件筛选实例),可以用Jfrog Pipelines的REST API实现:

  • 第一步:获取活跃运行实例ID
    调用GET /pipelines/api/v1/runs接口,通过参数过滤出目标实例:
    curl -H "Authorization: Bearer YOUR_PIPELINES_TOKEN" \
         "https://your-jfrog-instance/pipelines/api/v1/runs?status=RUNNING&pipelineId=YOUR_PIPELINE_ID&branch=YOUR_BRANCH"
    
    从返回结果中提取所有符合条件的runId。
  • 第二步:取消目标实例
    对每个提取到的runId,调用取消接口:
    curl -X POST -H "Authorization: Bearer YOUR_PIPELINES_TOKEN" \
         "https://your-jfrog-instance/pipelines/api/v1/runs/{runId}/cancel"
    
  • 可以把这套逻辑加到流水线的初始步骤里,每次触发新运行前自动清理旧的活跃实例。

3. 在Pipeline DSL中嵌入取消脚本

直接在流水线的DSL定义里添加前置步骤,用脚本完成取消操作,以Groovy DSL为例:

pipeline {
    agent any
    environment {
        PIPELINES_TOKEN = credentials('pipelines-api-token')
        PIPELINES_URL = 'https://your-jfrog-instance'
        BRANCH_NAME = "${git.branch}"
    }
    stages {
        stage('Clean Up Previous Runs') {
            steps {
                script {
                    // 获取当前分支的活跃运行实例
                    def runsResponse = sh(
                        script: "curl -s -H 'Authorization: Bearer $PIPELINES_TOKEN' '$PIPELINES_URL/pipelines/api/v1/runs?status=RUNNING&branch=$BRANCH_NAME'",
                        returnStdout: true
                    )
                    def runs = new groovy.json.JsonSlurper().parseText(runsResponse).items
                    
                    // 逐个取消
                    runs.each { run ->
                        sh "curl -X POST -H 'Authorization: Bearer $PIPELINES_TOKEN' '$PIPELINES_URL/pipelines/api/v1/runs/${run.id}/cancel'"
                        echo "Canceled previous run: ${run.id}"
                    }
                }
            }
        }
        // 后续构建、测试等步骤
        stage('Build Application') {
            steps {
                // 你的构建逻辑
            }
        }
    }
}
  • 注意要提前在Jfrog Pipelines中配置好API令牌的凭证,确保脚本有足够权限调用API。

内容的提问来源于stack exchange,提问作者Abhishek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 12:15:32