我有一个作为域用户帐户下的服务在Windows上运行的Jenkins服务器。
当在主服务器上运行时,我可以让Jenkins将我的Git Repo(本地托管的Stash服务器)拉到工作区。
我想在Windows从属服务器上执行作业。我的问题是,当我启动项目时,主服务器首先将任务发送给从服务器,而从服务器尝试执行GIT拉取,但从服务器未安装GIT或SSH。
我想避免在从属服务器上安装SSH和GIT,我希望主服务器先执行拉动,然后再将工作空间推送到从属服务器,然后让从属服务器开始执行其任务。
这可能吗?有可以启用此功能的插件吗?
因此,我建议您为此目的有2个工作。第一项工作是绑定到主从服务器,它唯一要做的就是从存储库中提取源代码。第二项工作是从第一项工作中获取代码,并执行工作流所需的任何操作(编译,运行某些预处理器,运行测试等)。
这里的问题是如何在两个作业之间传递代码。我想告诉您2个解决方案。显式复制到另一个工作空间是非常不好的做法(工作空间不干净,更改节点会使它失败,更改名称会使它失败等等)。
此解决方案是最简单的,但是比另一个解决方案花费更多的时间。这里的主要优点是在从属步骤中保留了ENV变量,因此您无需再定义一次。它基于https://wiki.jenkins-ci.org/display/JENKINS/Clone+Workspace+SCM+Plugin。在您的第一项工作中,添加一个后构建步骤:然后,在您的从属工作中,在“源代码管理”中选择:完成。
在大多数情况下,我需要加快速度才能使一切变得更快,(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
在从属作业中,作为构建步骤,我将工件复制到工作区:并将其解压缩:tar zhxf ./dist/sourceCode.tar.gz -C ./
好处是巨大的-我们不受项目名称的约束,我们无需考虑构建在哪里运行等。从我与詹金斯(2)在一起工作的那几年开始,方法是最快的方法,也是“最干净的方法” ”也。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句