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


12

我正在使用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 /目录,然后在工作空间目录的上下文中运行batch命令。

这是完整的控制台输出:

由用户匿名启动在工作空间中构建C:\ Program Files(x86)\ Jenkins \ jobs \ Testing Github 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 \ jobs \ Testing Github Integration \ workspace> exit 2构建步骤“ Execute Windows batch command”将构建标记为失败完成:FAILURE

显然,我期望在控制台中看到我的打印语句的结果。

我搞砸了什么?为什么我的脚本还不在那里?


让我们看一下C:\ Windows \ TEMP \ hudson1966342425043540895.bat中的代码。您正在使用git pull吗?

Jenkins自动创建然后将其删除。您可以在控制台输出中看到完整的内容,但是-这是我上面引用的“ python roottest.py”命令
Affable Geek

roottest.py不在您的路径中。您在工作区目录中看到该文件还是该文件也被自动删除?运行git pull时,您需要进入克隆的存储库的本地副本(我相信),然后应将所有新更改拉入本地存储库。当我看不到任何实际的命令正在运行时,很难为您提供帮助。

您是否对github插件wiki.jenkins-ci.org/display/JENKINS/Git+Plugin#GitPlugin-遵循了这些说明?您是否设置了GIT_HOME环境变量等?

天哪!讨厌窗户的另一个原因。谢谢你-我认为这可能是问题
和蔼可亲的野人

Answers:


5

对于我的构建(在Linux主机上),我执行以下操作(作为Jenkins中的构建步骤),以从刚签出的工作空间中执行构建脚本:

执行shell命令:

 sh -x $WORKSPACE/build/myproject.build

我认为它在Windows上的工作方式类似,除了您当然使用\而不是/,并且使用python而不是sh来执行脚本。



0

您可以在Git中存储一些脚本,例如test.sh:

#!/bin/bash
_test_func(){ 
 echo 'test'
}

然后在“执行外壳”输入中,导入该脚本并调用“ _test_func”:

source test.sh
_test_func

结果:

 + source test.sh
 + _test_func
 test
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.