如何为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插件实现动态参数:
- 在流水线参数化构建配置中,新增Active Choices单选参数,名称
RUN_LOAD_TEST,选项为是/否 - 新增Active Choices Reactive参数,名称
LOAD_TEST_AUTH_TOKEN,触发源选择RUN_LOAD_TEST,编写脚本控制显示逻辑:
// 选择"是"时显示输入框,否则隐藏 if (RUN_LOAD_TEST == '是') { return [''] } else { return [] }
- 流水线内的阶段逻辑与方案一完全一致,用户触发构建时只有选"是"才会看到认证令牌输入框。
关键注意事项
- 敏感认证值必须用
password参数类型,避免明文暴露在日志或界面中 - 负载测试阶段建议单独设置超时时间,防止长时间占用构建资源
- 多分支流水线需在分支模板中统一配置参数
内容的提问来源于stack exchange,提问作者Rizwan
相关产品推荐
相关产品推荐

