Jenkins配置Bitbucket推送触发构建:如何排除特定用户?
如何让Jenkins排除特定Bitbucket用户触发构建
方法1:在Jenkins端拦截(Freestyle/Pipeline都适用)
- Freestyle项目:安装Pre-build Conditions插件,添加「运行条件」并选择「用户条件」,设置为“排除指定用户”,填入用户A的Bitbucket用户名(注意要和Jenkins识别的账号名一致,避免写错)。
- Pipeline项目:直接在脚本开头加判断逻辑,优先用提交者邮箱筛选(比名字更精准,不会重名):
pipeline { agent any triggers { bitbucketPush() } stages { stage('校验提交用户') { steps { script { // 获取最近一次提交的邮箱 def commitEmail = sh(script: 'git log --pretty=format:"%ae" -n 1', returnStdout: true).trim() // 匹配到排除用户则终止构建 if (commitEmail == 'userA@example.com') { error('该用户提交的代码不触发构建,终止流程') } } } } // 此处放置正常的构建步骤 } }
方法2:在Bitbucket源头拦截(更高效)
登录Bitbucket仓库找到对接Jenkins的Webhook,编辑其「触发条件」,添加规则:提交者用户名 ≠ 用户A。这样Bitbucket直接不会给Jenkins发送触发请求,从源头避免无效构建。
注意事项
- 用用户名判断时,要确认Jenkins获取到的是Bitbucket账号的官方用户名,而非昵称;用邮箱筛选更稳妥,因为Bitbucket账号的邮箱是唯一的。
- 如果Jenkins通过OAuth连接Bitbucket,需确保权限足够读取提交者信息,否则无法获取用户数据导致判断失效。
内容的提问来源于stack exchange,提问作者Upgrade
相关产品推荐
相关产品推荐

