![如何让 Jenkins 执行从 Git 中提取的脚本?](https://linux22.com/image/803537/%E5%A6%82%E4%BD%95%E8%AE%A9%20Jenkins%20%E6%89%A7%E8%A1%8C%E4%BB%8E%20Git%20%E4%B8%AD%E6%8F%90%E5%8F%96%E7%9A%84%E8%84%9A%E6%9C%AC%EF%BC%9F.png)
我正在使用 Jenkins 来触发和管理一系列导入作业。我想将导入脚本放在 Github 中,当 Jenkins 构建作业时,它应该 (a) 将该版本控制脚本从 Github 中拉出并 (b) 运行该脚本。
我遇到的问题是我不知道如何引用要在作业中运行的脚本的名称。我假设源代码被拉入工作区目录。这个假设正确吗?(如果有文档就好了!)
以下是我目前所做的:
- 在我的 Windows Server 上安装了 Jenkins(显然)(不,我别无选择)
- 在我的 GitHub 帐户上创建一个存储库并将我的代码放入其中
- 公开地址:https://github.com/mcholl/SARS-Import/
- 您将看到我有两个脚本,roottest.py 和 omniture-video\test.py。我确信那里的代码已获得 Apple 的专利 :)
- 我的想法是运行 roottest.py
- 安装了Github 插件
- 创建了一个作业,如下所示:
- 项目名称 =“测试 Github 集成”
- GitHub 项目:https://github.com/mcholl/SARS-Import.git/
- 添加 Windows 批处理命令:python roottest.py
- 手动执行作业
但是,我收到的是无法找到该文件的错误消息。这很奇怪,因为我假设工作流程是“将源的本地副本拉到 ...(Job)/workspace/ 目录,然后在工作区目录的上下文中运行批处理命令。
以下是完整的控制台输出:
由用户 anonymous 开始在工作区 C:\Program Files (x86)\Jenkins\jobs\Testing Github Integration\workspace 中构建 [workspace] $ cmd /c call 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\jobs\Testing Github Integration\workspace>exit 2 构建步骤“执行 Windows 批处理命令”将构建标记为失败 完成:失败
显然,我希望在控制台中看到打印语句的结果。
我搞砸了什么?为什么我的脚本还没有出现?
答案1
对于我的构建(在 Linux 主机上),我执行如下操作(作为 Jenkins 中的构建步骤)从新签出的工作区中执行构建脚本:
执行shell命令:
sh -x $WORKSPACE/build/myproject.build
我认为它在 Windows 上的工作原理类似,当然,你将会使用 \ 而不是 /,并且使用 python 而不是 sh 来执行你的脚本。
答案2
您可以在构建中写两行:
chmod 777 ./my_script.sh
./my_script.sh
答案3
您可以在 Git 中存储一些脚本,例如 test.sh:
#!/bin/bash
_test_func(){
echo 'test'
}
然后在“执行 shell”输入中,导入该脚本并调用“_test_func”:
source test.sh
_test_func
结果:
+ source test.sh
+ _test_func
test