如何让 Jenkins 执行从 Git 中提取的脚本?

如何让 Jenkins 执行从 Git 中提取的脚本?

我正在使用 Jenkins 来触发和管理一系列导入作业。我想将导入脚本放在 Github 中,当 Jenkins 构建作业时,它应该 (a) 将该版本控制脚本从 Github 中拉出并 (b) 运行该脚本。

我遇到的问题是我不知道如何引用要在作业中运行的脚本的名称。我假设源代码被拉入工作区目录。这个假设正确吗?(如果有文档就好了!)

以下是我目前所做的:

  1. 在我的 Windows Server 上安装了 Jenkins(显然)(不,我别无选择)
  2. 在我的 GitHub 帐户上创建一个存储库并将我的代码放入其中
    • 公开地址:https://github.com/mcholl/SARS-Import/
    • 您将看到我有两个脚本,roottest.py 和 omniture-video\test.py。我确信那里的代码已获得 Apple 的专利 :)
    • 我的想法是运行 roottest.py
  3. 安装了Github 插件
  4. 创建了一个作业,如下所示:
  5. 手动执行作业

但是,我收到的是无法找到该文件的错误消息。这很奇怪,因为我假设工作流程是“将源的本地副本拉到 ...(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

相关内容