jenkins - 在 post 步骤中并行执行
问题描述
我正在同一管道中构建 2 个不同的环境,我想同时对这两个环境进行清理。
据我了解, parallel 在 post step 中不起作用:post step parallel。
有什么建议么?我的代码示例:
post {
always {
script{
cleanup(env1)
cleanup(env2)
}
}
}
def cleanup(env) {
withEnv(env) {
sh "./cleanup.py"
}
}
解决方案
parallel
只要将关键字封装在script
块中,关键字就可以在后置条件中工作,因为script
块只是脚本化管道的后备,它允许您在任何地方运行并行执行。
以下应该可以正常工作:
post {
always{
script {
def environments = ['env1', 'env2', 'env3']
parallel environments.collectEntries {
["Cleanup ${it}" : {
cleanup(it)
}]
}
}
}
}
def cleanup(env) {
withEnv(env) {
sh "./cleanup.py"
}
}
node
如果帖子部分中的步骤需要在特定代理上运行,请不要忘记使用关键字分配代理。