我试图在python中改编一个已经制作好的脚本,并且可以在本地计算机上运行(我称之为B机),我有几个命令,其中一个是QMAKE,它似乎无法正常运行jenkins声明式语法。
我在机器A中有jenkins,并且我正在通过ssh发送命令而没有任何问题,但是当我尝试通过jenkins脚本进行QMAKE时,与以前在本地完成的makefile相比,我得到了4条新行,并且全部使用 .qmake .stash 。我已经使用它来识别QMAKE路径并将其映射到jenkins脚本中:
QMAKE = '/Users/mactester/Qt/5.8/clang_64/bin//qmake'
这是我用来生成makefile的命令:
sh 'ssh $MACOS_SOFTWARETEST "cd Desktop/job_${JOB_NAME}_build_${BUILD_NUMBER}/firmware/helpers/connector/release; ${QMAKE} -config release ../Connector"'
我已经尝试通过先前路径上的该存储库在本地进行操作:
qmake -config release ../Connector
它会生成没有这4行的makefile。
我100%肯定通过jenkins使用的版本正确,
[jenkins_example_chameleon_macos] Running shell script
+ ssh mactester@192.168.1.7 '/Users/mactester/Qt/5.8/clang_64/bin//qmake -v'
QMake version 3.1
Using Qt version 5.8.0 in /Users/mactester/Qt/5.8/clang_64/lib
本地:
macos-softwaretester:release mactester$ qmake -v
QMake version 3.1
Using Qt version 5.8.0 in /Users/mactester/Qt/5.8/clang_64/lib
有人知道为什么通过詹金斯进行QMAKE时要添加这些行吗?
更新我
如果我直接在jenkins机器上启动生成的jenkins输出命令,则可以正确创建makefile。
UPDATE II
已过滤的jenkins文件和日志输出:https://gist.github.com/SipriusPT/77a0068570c5b94a33480509041567ad
请注意,我必须中止脚本执行,因为在该makefile上调用make时,脚本会进入循环。而且,jenkins脚本的qmake输出与直接在shell中使用时没有区别。
UPDATE III
我忘了说两行都提到.qmake.stash:
.../Connector/.qmake.stash
.qmake.stash \
.qmake.stash \
-$(DEL_FILE) .qmake.stash \
如果我删除了那些,我就能够成功运行make,但是随着这些进入循环。
UPDATE IV
我在这里没有提到,但是我先还原了虚拟机的快照,然后在jenkins中执行此操作之前启动了它,因为我没有想到这可能会导致任何问题,但是似乎我无法通过jenkins脚本使用QMAKE无需在还原后重新引导该系统。但是我真的不明白为什么,因为我没有更改jenkins脚本中的任何内容,并且如果我直接从jenkins SO Shell还原后启动这些命令,我将能够毫无问题地运行这些命令,并且makefile生成良好。在发布此替代方法之前,我已经对此问题进行了全面测试!
我真的不知道为什么会这样。