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
相关产品推荐
相关产品推荐

