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

如何为Jenkins流水线创建负载测试选择参数?

实现Jenkins流水线的负载测试可选执行方案

方案一:基础参数组合(无需额外插件)

直接用Jenkins内置参数类型实现,核心是通过选项参数控制是否执行负载测试,配合密码参数收集敏感认证信息,再在流水线中做条件判断与校验。

1. 定义流水线参数

在流水线的parameters块中声明参数:

pipeline {
    agent any
    parameters {
        // 控制负载测试开关,默认选"否"避免误触发耗时任务
        choice(
            name: 'RUN_LOAD_TEST',
            choices: ['否', '是'],
            description: '是否执行耗时较长的负载测试?'
        )
        // 负载测试所需的认证令牌,选"是"时必填
        password(
            name: 'LOAD_TEST_AUTH_TOKEN',
            description: '负载测试服务的认证令牌(仅选择"是"时需要填写)',
            defaultValue: ''
        )
    }
    // 后续阶段逻辑...
}

2. 流水线阶段逻辑

通过when条件判断是否进入负载测试阶段,同时校验认证值有效性:

stages {
    stage('代码检出') { steps { git url: 'your-repo-url', branch: 'main' } }
    stage('镜像构建') { steps { sh 'docker build -t your-image:${BUILD_NUMBER} .' } }
    stage('单元测试') { steps { sh './gradlew test' } }
    stage('代码质量检测') { steps { sh './gradlew sonarqube' } }
    stage('安全扫描') { steps { sh 'trivy image your-image:${BUILD_NUMBER}' } }
    stage('镜像推送') { steps { sh 'docker push your-image:${BUILD_NUMBER}' } }

    stage('负载测试') {
        // 仅当选择"是"时执行该阶段
        when {
            expression { params.RUN_LOAD_TEST == '是' }
        }
        steps {
            script {
                // 校验认证令牌是否填写,未填写则终止构建
                if (!params.LOAD_TEST_AUTH_TOKEN) {
                    error '执行负载测试必须提供有效的认证令牌!'
                }
                // 执行负载测试命令(示例用k6工具,替换为你的实际命令)
                sh 'k6 run --env AUTH_TOKEN=${LOAD_TEST_AUTH_TOKEN} ./scripts/load-test.js'
            }
        }
        // 可选:设置超时时间,防止负载测试无限占用资源
        options { timeout(time: 90, unit: 'MINUTES') }
    }
}

post {
    always { echo "构建结束,负载测试执行状态:${params.RUN_LOAD_TEST == '是' ? '已执行' : '已跳过'}" }
}

方案二:动态参数(需Active Choices插件)

如果想优化用户体验,让认证参数仅在选择"是"时显示,可安装Active Choices插件实现动态参数:

  1. 在流水线参数化构建配置中,新增Active Choices单选参数,名称RUN_LOAD_TEST,选项为是/否
  2. 新增Active Choices Reactive参数,名称LOAD_TEST_AUTH_TOKEN,触发源选择RUN_LOAD_TEST,编写脚本控制显示逻辑:
// 选择"是"时显示输入框,否则隐藏
if (RUN_LOAD_TEST == '是') {
    return ['']
} else {
    return []
}
  1. 流水线内的阶段逻辑与方案一完全一致,用户触发构建时只有选"是"才会看到认证令牌输入框。

关键注意事项

  • 敏感认证值必须用password参数类型,避免明文暴露在日志或界面中
  • 负载测试阶段建议单独设置超时时间,防止长时间占用构建资源
  • 多分支流水线需在分支模板中统一配置参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 22:55:21