Jenkins需求:为声明式流水线添加停止当日环境关停的选项
解决方案:给Jenkins声明式流水线加跳过关停的选项
嘿,刚上手Jenkins别发愁,这个需求其实很容易实现!核心思路就是给流水线加个参数化构建选项,让你可以手动选择是否跳过当日的关停操作,同时不影响定时任务的正常执行。下面是具体步骤和代码示例:
1. 添加参数化构建选项
在声明式流水线里,用parameters块添加一个布尔类型的参数,让用户可以勾选是否跳过关停。默认值设为false,这样定时自动跑的时候会正常执行关停,只有你手动触发时勾选才会跳过。
2. 在关停步骤加条件判断
在执行关停操作的阶段,通过params.SKIP_SHUTDOWN判断是否要执行关停逻辑。如果参数为true,就输出提示跳过;否则执行关停命令。
完整流水线示例
pipeline { agent any // 定义参数:是否跳过当日关停 parameters { booleanParam( name: 'SKIP_SHUTDOWN', defaultValue: false, description: '勾选这个选项,当日就不会执行环境关停啦' ) } // 定时触发:假设每天22点执行(你可以改成自己的时间) triggers { cron('0 22 * * *') } stages { stage('处理环境关停') { steps { script { if (params.SKIP_SHUTDOWN) { echo '✅ 已勾选跳过关停,今日不执行环境关停操作' } else { echo '🔧 开始执行环境关停操作...' // 这里替换成你实际的关停命令,比如: // sh 'ssh your-server "sudo systemctl stop your-environment"' // 或者调用你的关停脚本:sh './scripts/shutdown-environment.sh' } } } } // 如果你的重启是次日定时执行,也可以放在同一个流水线里(或者单独一个流水线) stage('次日重启环境') { // 这里可以加条件:只有当天执行了关停,次日才重启 when { not { equals expected: true, actual: params.SKIP_SHUTDOWN } } steps { echo '🔄 次日执行环境重启操作...' // 替换成你的重启命令: // sh 'ssh your-server "sudo systemctl start your-environment"' } } } }
怎么用?
- 定时自动执行:每天到你设置的时间,流水线会自动触发,因为
SKIP_SHUTDOWN默认是false,所以会正常执行关停。 - 手动跳过关停:当你需要在环境上测试时,手动点击流水线的「Build with Parameters」按钮,勾选
SKIP_SHUTDOWN,然后构建,当天就不会关停环境了。
小提示
- 如果你重启是单独的定时任务,那可以不用把重启逻辑放在这个流水线里,保持两个独立的定时流水线就行(一个关停,一个次日重启)。
- Cron表达式可以根据你的需求调整,比如
0 22 * * *是每天22:00执行,你可以在Jenkins的Cron表达式帮助面板里查询自己需要的时间格式。
内容的提问来源于stack exchange,提问作者fs314
相关产品推荐
相关产品推荐

