我的Jenkins管道中有一个阶段,它执行以下操作:
stage('nose tests') {
steps {
timeout(45) {
wrap([$class: 'Xvfb', additionalOptions: '', assignedLabels: '', displayName: 99,
displayNameOffset: 0, installationName: 'Xvfb', screen: '']) {
sh "bin/run-ci-tests.sh"
}
}
}
post {
always {
junit '**/nosetests.xml'
}
}
}
bash脚本bin/run-ci-tests.sh
设置一个venv,更新需求,启动各种依赖项,然后运行nosetests。
bash脚本还会尝试通过杀死各种子进程来自行清理。这在Jenkins上下文中变得有点复杂,因为Jenkins从属进程是进程组的一部分,所以我不能被PGID杀死。
在清理故障时,我注意到有两个PID说他们的命令是`bin / run-ci-tests.sh"。如果这实际上是两次运行就不会很好......
ubuntu@jenkins3-exec02:~$ ps aux | grep run-ci-tests.sh
jenkins 10797 0.0 0.0 11212 1644 ? S 17:22 0:00 bash bin/run-ci-tests.sh
jenkins 10810 0.0 0.0 11204 672 ? S 17:22 0:00 bash bin/run-ci-tests.sh
ubuntu 12114 0.0 0.0 10464 948 pts/0 S+ 17:24 0:00 grep --color=auto run-ci-tests.sh
有关为什么这可能会出现两次运行的任何见解?