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

如何在Jenkins任务中创建多个构建触发器并为每个配置不同步骤

在单个Jenkins任务中实现多触发器对应不同执行步骤

自由风格项目实现方案

  1. 配置构建触发器

    • 给任务添加三类触发器:
      • 通用构建(Common build):根据需求选择,比如「触发远程构建」(设置专属token)、GitHub/GitLab分支推送webhook等。
      • 定时构建(Timing build):在「构建触发器」中勾选「定期构建」,填入cron表达式(例如H 2 * * *表示每天凌晨2点执行)。
      • 指定规则构建(Specified rule construction):可以用参数化构建(添加布尔参数RUN_SPECIFIED_STEPS,手动触发时勾选),或者设置为「当标签被推送时」触发,或者指定特定分支推送触发。
  2. 添加条件执行逻辑
    先安装Conditional BuildStep插件(Jenkins插件市场搜索安装),然后在「构建步骤」中添加「Conditional steps (multiple)」,为每类触发器设置专属条件和步骤:

    • 通用构建:设置条件为「环境变量BUILD_CAUSE等于REMOTETRIGGER」(远程触发的情况),然后在条件块内添加步骤1-3。
    • 定时构建:设置条件为「环境变量BUILD_CAUSE等于TIMERTRIGGER」,在条件块内添加步骤4-7。
    • 指定规则构建:如果是参数触发,设置条件为「参数RUN_SPECIFIED_STEPS等于true」;如果是标签/特定分支触发,设置条件为「环境变量BRANCH_NAME等于指定值」,然后添加步骤8-11。

流水线项目(Jenkinsfile)实现方案

用Jenkins流水线的when指令判断构建触发原因,精准执行对应步骤,示例代码如下:

pipeline {
    agent any
    triggers {
        // 通用构建:远程触发(设置token)
        remoteTrigger(remoteToken: 'common-build-token')
        // 定时构建:每天凌晨2点执行
        cron('H 2 * * *')
        // 指定规则构建:GitHub标签推送触发(可替换为GitLab触发器)
        githubPush()
    }
    parameters {
        // 手动触发时可选的指定规则参数
        booleanParam(name: 'RUN_SPECIFIED_STEPS', defaultValue: false, description: '执行指定规则步骤')
    }
    stages {
        stage('通用构建步骤') {
            when {
                // 判断是否为远程触发
                expression { currentBuild.getBuildCauses().any { it.shortDescription.contains('Remote trigger') } }
            }
            steps {
                echo '执行步骤1'
                echo '执行步骤2'
                echo '执行步骤3'
            }
        }
        stage('定时构建步骤') {
            when {
                // 判断是否为定时触发
                expression { currentBuild.getBuildCauses().any { it.shortDescription.contains('TimerTrigger') } }
            }
            steps {
                echo '执行步骤4'
                echo '执行步骤5'
                echo '执行步骤6'
                echo '执行步骤7'
            }
        }
        stage('指定规则构建步骤') {
            when {
                // 满足任一条件即执行:手动勾选参数 或 标签推送触发
                anyOf {
                    expression { params.RUN_SPECIFIED_STEPS }
                    expression { currentBuild.getBuildCauses().any { it.shortDescription.contains('Tag push') } }
                }
            }
            steps {
                echo '执行步骤8'
                echo '执行步骤9'
                echo '执行步骤10'
                echo '执行步骤11'
            }
        }
    }
}

注意事项

  • 可以在Jenkins任务的「环境变量」页面查看BUILD_CAUSE的具体取值,不同触发器对应不同值(比如手动触发是MANUALTRIGGER),用于精准判断。
  • 如果用代码仓库webhook触发,可通过BRANCH_NAME环境变量区分分支,实现更细粒度的触发规则。
  • 自由风格项目中,若需要复杂条件,可选择「Run condition」中的「Script」选项,用Groovy脚本编写判断逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 05:53:21