基于Bamboo触发方式设置构建变量的实现方法
基于Bamboo触发方式实现差异化构建(快速构建/完整归档)
完全可行,Bamboo本身就支持根据触发源控制步骤是否执行,下面是具体实现方法和替代方案:
一、最直接的实现:内置变量+步骤条件判断
Bamboo自带识别构建触发原因的内置变量,直接用它控制归档步骤的执行即可,无需额外插件。
操作步骤
明确触发方式对应的变量值
Bamboo的bamboo.buildTriggerReason变量会返回构建触发类型:- 代码提交/推送触发:值为
commit(Git/SVN提交、webhook触发均返回此值) - 每日定时构建:值为
scheduled
- 代码提交/推送触发:值为
给归档步骤添加执行条件
找到构建计划里的「归档和安装包创建」步骤,进入编辑页面:- 找到「Conditions」(条件)设置项,选择「Run only if a condition is met」
- 输入条件表达式:
${bamboo.buildTriggerReason} == "scheduled" - 保存配置即可
验证效果
代码提交触发构建时,归档步骤自动跳过,实现快速构建;每日定时构建时,该步骤正常执行,生成归档和安装包。
二、进阶玩法:自定义变量适配更多场景
如果需要手动触发时也能选择是否执行归档,可以通过自定义变量扩展:
- 在构建计划的「Variables」中添加自定义变量
RUN_ARCHIVE,默认值设为false - 编辑每日定时触发配置,在「Trigger-specific variables」里设置
RUN_ARCHIVE=true - 将归档步骤的条件改为
${bamboo.RUN_ARCHIVE} == "true" - 这样手动触发构建时,还能手动选择是否开启归档,灵活度更高
三、替代方案:拆分两个构建计划
如果觉得条件判断不够直观,可直接拆成两个独立计划:
- 快速构建计划:绑定代码提交/推送的webhook,移除归档步骤,仅做编译检查
- 完整构建计划:设置每日定时触发,保留所有步骤生成归档包
- 优点:逻辑清晰,各自维护不互相干扰
- 缺点:需维护两个计划,公共步骤可通过Bamboo的「共享任务」减少重复配置
内容的提问来源于stack exchange,提问作者nobs
相关产品推荐
相关产品推荐

