【发布时间】:2020-02-26 22:59:07
【问题描述】:
我有一个 jenkins 作业 DSL,它使用“限制此项目可以在哪里运行”标签在远程节点(Linux 操作系统)上运行。
它有“构建”步骤->“执行外壳”
在我提到的执行shell中
sh /app/runalljobs.sh &
在远程节点主机上,runalljobs.sh 如下所示:
cat runalljobs.sh
ansible-playbook /app/test.yml -e argu=arg1
ansible-playbook /app/test.yml -e argu=arg2
.....
.....
ansible-playbook /app/test.yml -e argu=arg16
runalljobs.sh 假设在 runalljob.sh 执行时会在后台启动 16 个 ansible 进程。
当脚本从远程节点 putty shell 手动执行时,这可以正常工作。
但是,当使用未发生的 jenkins 作业调用时,我希望脚本启动 ansible 进程以在远程节点的后台运行。
我也试过评论sh /app/runalljobs.sh &
并在“执行shell”中添加单独的ansible命令,如下所示:
ansible-playbook /app/test.yml -e argu=arg1 &
ansible-playbook /app/test.yml -e argu=arg2 &
.....
.....
ansible-playbook /app/test.yml -e argu=arg16 &
但这也没有触发目标节点上的 ansible 进程。
如果我删除“&”然后所有 ansible 命令在远程上一个接一个地连续运行,它就可以工作。
但是,我希望所有的 ansible 命令在后台并行触发,并且 Jenkins 执行器应该继续执行其他执行 shell 任务。
您能建议我如何满足要求吗?
【问题讨论】:
标签: jenkins parallel-processing background ansible jenkins-job-dsl