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

如何在指定用户触发的Build Pipeline成功后触发Automation Pipeline

解决Jenkins特定用户触发后续自动化流水线的需求

背景

已知Jenkins Build A成功触发后需执行Automation Pipeline,基础逻辑可通过「Build after other projects are built」实现,但需要限制仅用户A、B触发Build A时才启动Automation Pipeline,用户C触发时跳过。

实现步骤

1. 配置基础依赖触发

在Automation Pipeline的配置页,找到构建触发器模块:

  • 勾选「Build after other projects are built」
  • 填入依赖项目Build A,按需勾选「Trigger only if build is stable」(确保仅Build A稳定成功时触发)

2. 添加用户过滤逻辑

Jenkins原生触发器不支持直接按用户过滤,需通过Groovy脚本实现权限校验:

针对Pipeline项目

在Jenkinsfile最开头加入以下判断,不符合条件则直接终止流水线:

// 获取触发Build A的用户ID
def triggerUser = currentBuild.getBuildCauses()[0].userId
// 定义允许触发的用户白名单
def allowedUsers = ['userA', 'userB']

if (!allowedUsers.contains(triggerUser)) {
    echo "触发用户${triggerUser}不在白名单内,Automation Pipeline终止"
    error "Unauthorized trigger"
}

针对自由风格项目

  1. 先安装「Conditional BuildStep」插件
  2. 在Automation Pipeline的构建环节,添加「Conditional step (single)」
  3. 选择「Run condition」为「Groovy script」,输入校验脚本:
def triggerUser = build.getBuildCauses()[0].userId
return ['userA', 'userB'].contains(triggerUser)
  1. 将所有自动化构建步骤嵌套在这个条件步骤内,只有脚本返回true时才执行

关键注意点

  • 脚本中的用户ID必须和Jenkins系统内的用户ID完全匹配(区分大小写)
  • 如果Build A是被系统账号或其他流水线触发,需提前确认getBuildCauses()返回的userId字段是否有效
  • 可通过echo语句在构建日志中记录触发用户信息,方便排查问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 20:05:25