如何在Gitlab CI的同一Linux设备上与另一个Java应用程序并行运行python脚本?
对于一个gitlab CI runner 我有一个jar文件,它需要在Git linux框中持续运行,但由于这是一个持续运行的应用程序,因此下一行中的python脚本无法执行。如何运行jar应用程序,然后一个接一个地同时执行python脚本 .gitlab.ci-yml文件: sh文件的代码为java-jarapp.jar 由于此应用程序正在持续运行,因此不会执行第四行代码python3 Report.py如何在Gitlab CI的同一Linux设备上与另一个Java应用程序并行运行python脚本?,python,python-3.x,git,gitlab,Python,Python 3.x,Git,Gitlab,对于一个gitlab CI runner 我有一个jar文件,它需要在Git linux框中持续运行,但由于这是一个持续运行的应用程序,因此下一行中的python脚本无法执行。如何运行jar应用程序,然后一个接一个地同时执行python脚本 .gitlab.ci-yml文件: sh文件的代码为java-jarapp.jar 由于此应用程序正在持续运行,因此不会执行第四行代码python3 Report.py 如何使这两个脚本在不停止.jar应用程序的情况下同时运行?要逐个运行这两个脚本,可以将&
如何使这两个脚本在不停止.jar应用程序的情况下同时运行?要逐个运行这两个脚本,可以将&添加到阻塞行的末尾。这将使它在后台运行 或者
bash scan.sh&或add&到scan.sh中调用jar文件的行的末尾 立即的解决方案可能是:
pwd && ls -l
echo "ls OK"
unzip ZAP_2.8.0_Core.zip && ls -l
echo "unzip + ls OK"
bash scan.sh &
scanpid=$!
echo "started scanpid with pid $scanpid"]
ps axuf | grep $scanpid || true
echo "ps + grep OK"
( python3 Report.py ; echo $? > report_status.txt ) || true
echo "report script OK"
kill $scanpid
echo "kill OK"
echo "REPORT STATUS = $(cat report_status.txt)"
test $(cat report_status.txt) -eq 0
在后台启动java进程,
运行python代码,记住其返回状态并始终返回true。
在运行python后终止后台进程
检查python脚本的状态代码
也许这是不必要的,因为我从未检查过gitlabci如何处理后台进程,这些进程是由它的运行者产生的
我在这里采取保守的做法。
-我记得bash脚本的进程id,以便以后可以终止它
-我确保运行python脚本的行始终返回0退出代码,这样gitlabci不会停止执行下一行,但我记得状态代码
-然后我杀死了bash脚本
-然后检查python脚本的退出代码是否为0,这样gitlabci就可以正确地检查运行程序是否成功执行
另一个与你的问题无关的小评论
我真的不明白你为什么写信
unzip ZAP_2.8.0_Core.zip && ls -l
而不是
unzip ZAP_2.8.0_Core.zip ; ls -l```
如果您希望解压命令失败,您可以直接编写
unzip ZAP_2.8.0_Core.zip
ls -l
gitlabci将在执行ls-l之前自动中止
为了更好地进行调试和错误分析,我还添加了许多echo语句,您可以在最终的解决方案中删除它们。第一步:找出像BASH或posixshell这样的shell所使用的编程语言。然后,了解如何在那里并行运行。如果从问题中删除git、gitlab、Python和Java,只需要并行运行两个进程。这将使你的问题更简洁、更小,并为你提供更好的在线搜索基础!作为这里的新用户,请使用,阅读并理解!我会尽量简明扼要。谢谢:我试过了,但是只有应用程序在运行,python脚本没有被执行。应用程序正在运行,但是python脚本没有被执行。因此,没有关闭的范围。您是否可以每隔一行添加一条回显行,并报告您在报告gitlab ci runner时得到的结果。正在执行的最后一行是什么?添加了一些用于调试的echo语句。在我的答案中添加了所有行之后,请发布gitlabci运行程序的eact输出。这有望提供足够的信息来定位问题或至少是第一个问题
unzip ZAP_2.8.0_Core.zip
ls -l