强迫詹金斯从主人的GIT拉

时间:2015-04-27 18:55:33

标签: git ssh jenkins

我在Windows上作为域用户帐户下的服务运行Jenkins服务器。

我可以让Jenkins在主服务器上运行时将我的Git Repo(本地托管的Stash服务器)拉到工作区。

我想在Windows从属服务器上执行该作业。我的问题是,当我启动项目时,主服务器首先将任务发送给从站,并且从站尝试执行GIT拉取,但从站没有安装GIT或SSH。

我想避免在我的奴隶上安装SSH和GIT,我希望主人先做拉,然后将工作空间推送到奴隶,然后让奴隶启动它的任务。

这可能吗?是否有插件可以启用此功能?

2 个答案:

答案 0 :(得分:2)

我也面临同样的问题,我解决它的方法是创建两个节点和两个作业

Job1 -> Master
Job2 -> Slave

Job1中,我从GIT中提取数据并创建war文件,然后使用Copy To Slave插件将主数据库{Jenkins_Home}/userContent中的数据复制到从属工作区。

我还使用Post Build Task插件执行shell脚本,将部署脚本和war一起复制到{Jenkins_Home}/userContent

主要工作

Git Repo Build Task Post Build Task


奴隶工作

Slave Build Task Slave Post Build Task

答案 1 :(得分:2)

所以,我想建议你为此目的找2份工作。第一个工作是绑定到主从,它唯一做的就是从存储库中提取源代码。第二项工作是从第一份工作中获取代码,并为您的工作流程执行任何操作(编译,运行一些预处理器,运行测试等)。

这里的问题是如何在2个作业之间传递代码。我想告诉你2个解决方案。显式复制到另一个工作区是一种非常糟糕的做法(不是干净的工作空间,更改节点会使其失败,更改名称会使其失败等)。

  1. 此解决方案最简单,但需要更多时间。这里的主要优点是在从属步骤中保留ENV变量,因此您不需要再次定义它们。 它基于https://wiki.jenkins-ci.org/display/JENKINS/Clone+Workspace+SCM+Plugin。 在第一份工作中,添加一个构建后的步骤: enter image description here 然后,在您的奴隶工作中选择“源代码管理”: enter image description here 你已经完成了。

  2. 在我的大多数情况下,我需要速度让一切更快,(1)方法并不总是适合我。这就是我使用https://wiki.jenkins-ci.org/display/JENKINS/Copy+Artifact+Plugin的原因。 作为我执行的最后一个构建步骤的主要工作(假设我使用的是Linux或者我已经为windows安装了bash工具,如果没有,那么在Win上你应该使用zip)一些bash命令: tar -hzcf dist/sourceCode.tar.gz ./* --exclude=dist --exclude=".git" 然后在构建后的操作Archive the artifacts中,定义我要归档dist/sourceCode.tar.gz 在slave作业中,作为构建步骤,我将工件复制到工作区: enter image description here 解压缩它: tar zhxf ./dist/sourceCode.tar.gz -C ./

  3. 好处很棒 - 我们不会绑定项目的名称,我们不需要考虑构建运行的位置等 从我与詹金斯(2)一起工作多年来,方法是最快的,也是“最干净的”。