我正在使用Jenkins触发并pipe理一系列的导入作业。 我想把我的导入脚本放到Github中,当Jenkins创build这个工作时,它应该(a)从Github中取出这个受版本控制的脚本,并且(b)运行脚本。
我遇到的问题是我不知道如何引用脚本的名字在作业中运行。 我假设源代码被拉入工作区目录。 这个假设是否正确? (如果只有文件!)
以下是我迄今为止所做的:
但是,我得到的是文件无法find的错误信息。 这很奇怪,因为我认为工作stream将“将源的本地副本拖到…(Job)/ workspace /目录,然后在工作空间目录的上下文中运行批处理命令。
以下是完整的控制台输出:
由用户匿名开始在工作区中build立C:\ Program Files文件(x86)\ Jenkins \作业\testingGithub Integration \ workspace [workspace] $ cmd / c调用C:\ Windows \ TEMP \ hudson1966342425043540895.bat
C:\ Program Files(x86)\ Jenkins \ jobs \ Testing Github Integration \ workspace> python roottest.py python:无法打开文件'roottest.py':[Errno 2]没有这样的文件或目录
C:\ Program Files文件(x86)\ Jenkins \作业\testingGithub集成\工作区>退出2构build步骤'执行Windows批处理命令'标记构build失败完成:FAILURE
很显然,我期待在控制台中看到我的打印语句的结果。
我搞砸了什么? 为什么不是我的脚本已经在那里?
对于我的构build(在Linux主机上),我做了这样的事情(作为Jenkins中的构build步骤),从刚刚签出的工作空间中执行构build脚本:
执行shell命令:
sh -x $WORKSPACE/build/myproject.build
我认为它会在Windows上类似的工作,除非你使用\而不是/而你使用python而不是sh执行你的脚本。
你可以在你的版本中写两行:
chmod 777 ./my_script.sh ./my_script.sh
你可以在Git中存储一些脚本,例如test.sh:
#!/bin/bash _test_func(){ echo 'test' }
然后在“Execute shell”input中,input该脚本并调用“_test_func”:
source test.sh _test_func
结果:
+ source test.sh + _test_func test