Jenkins JCasc/Job DSL开启BitBucket推送触发构建的配置项查询
问题根因与解决方案
你遇到的webhook收到变更但不触发构建的问题,由两个常见配置问题导致,对应修改JobDSL代码即可:
1. 移除无效的旧版Bitbucket Trigger配置
你最后加的两个BitBucketTrigger、BitBucketMultibranchTrigger配置是给普通单分支流水线用的,完全不适用Organization Folder自动生成的多分支流水线,可以直接删除。
Bitbucket Branch Source插件原生支持webhook触发,不需要额外安装老的Bitbucket Trigger插件。
2. 修正noTriggerOrganizationFolderProperty配置
你当前配置的noTriggerOrganizationFolderProperty作用是指定匹配到的分支变更时不触发构建,你当前只配置了branches('develop'),理论上master分支不受影响,如果需要放开所有分支的触发限制,可以直接删除这个properties块;如果需要保留部分分支不触发,把不需要触发的分支名/匹配规则加入branches列表即可。
3. 配置首次发现分支自动构建
你日志里的master分支变更显示是null → 提交ID,说明这是首次扫描到master分支,Jenkins默认首次发现的分支不会自动构建,需要添加对应的trait开启首次自动构建:
在你配置traits的configure块里加入以下代码:
// 开启首次发现分支/PR时自动构建 traits << 'jenkins.scm.impl.trait.SCMHeadInitialDiscoveryTrait' { buildAll(true) }
4. 确保多分支流水线开启自动构建(可选)
如果修改后还是不触发,可以在projectFactories块里给自动生成的所有多分支流水线配置开启SCM变更自动触发:
projectFactories { workflowMultiBranchProjectFactory { scriptPath 'Jenkinsfile' // 给自动生成的多分支流水线添加自动构建配置 configure { node -> node / 'projectTemplate' / triggers << 'org.jenkinsci.plugins.workflow.multibranch.SCMTrigger' { spec('') ignorePostCommitHooks(false) } } } }
修改后重新应用JobDSL配置,重新扫描一次Organization Folder,后续收到Bitbucket推送就会自动触发对应分支的构建了。
内容的提问来源于stack exchange,提问作者ludenus

