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

Jenkins Pipeline如何配置changeset或首次构建触发的when条件

解决方案

在when条件块中使用anyOf关键字做逻辑或组合,同时覆盖「匹配changeset规则的文件变更」和「流水线首次运行」两个触发场景即可解决首次运行阶段被跳过的问题。

常规实现

通过判断是否存在历史构建来识别首次运行,示例代码如下:

pipeline {
    agent any
    stages {
        stage('你的目标阶段') {
            when {
                anyOf {
                    // 替换为实际需要匹配的文件路径规则
                    changeset "**/target-dir/**"
                    expression { currentBuild.previousBuild == null }
                }
            }
            steps {
                // 填写阶段实际执行的步骤
            }
        }
    }
}

严谨版实现

如果你的流水线配置了丢弃旧构建的规则,可能出现历史构建被清理后currentBuild.previousBuild为空、导致阶段误触发的问题。这种场景下可以直接通过构建号判断首次运行,不受旧构建清理策略影响:

stage('你的目标阶段') {
    when {
        anyOf {
            changeset "**/target-dir/**"
            // 每条独立流水线的首次构建号固定为1,多分支场景下每个分支也会维护独立的构建号序列,判断逻辑准确
            expression { currentBuild.number == 1 }
        }
    }
    steps {
        // 填写阶段实际执行的步骤
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 09:27:13