同一工作空间可进行多个作业


74

我有一个名为“开发”的工作,还有另一个名为“代码分析”的项目。目前,我们有两个不同的作业和不同的工作区,但是代码相同。有什么办法可以将同一工作空间用于多个作业?
我检查了Jenkins中可用的插件,但是没有找到合适的插件。


3
您可以使用自定义的工作空间stackoverflow.com/questions/20537137/...
KeepCalmAndCarryOn

4
如果确实使用相同的工作空间,则需要确保没有并发性,并且可以正确地跟踪两者之间的修订。如果您在开发作业开始签出代码时正在分析代码,则可能会发生并发。该网站上有关于如何防止这些问题的插件(和答案)。(完整披露:我们尝试了一个通用的工作区,并决定将克隆工作区插件与单独的工作区一起使用对我们来说更好。)
jwernerny 2014年

1
要轻松实现并发,请从开发作业中触发分析作业,然后在分析作业中选中“高级项目选项”“在上游项目构建时阻止构建”。
Paul Hicks

Answers:


84

假设您的“开发” Jenkins工作空间为/var/workspace/job1。在“代码分析”作业配置页面中,在选项卡下General单击Advanced...并选择选项,Use custom workspace并提供与/var/workspace/job1“开发”作业相同的工作空间。


23
这是一条不错的路...但是我会更近一步,并使用wiki.jenkins-ci.org/display/JENKINS/inheritance-plugin继承$ {WORKSPACE},因此不必进行硬编码在所有工作中-维护起来会更清洁。
thekbb 2014年

5
@thekbb,这是一个选项,但与JobConfigHistory插件结合使用时会发生堆栈溢出。在维护者纠正该问题之前,对于需要JobConfigHistory插件进行使用继承的工作的人来说,它是无用的……
Jon L.

工作区的目录主站之间的不同(工作/ <JOBNAME> /工作区)和从节点(工作区/ <JOBNAME>因此,硬编码涉及脚本以及插件。
rickfoosusa


1
仅供参考,在Jenkins版本2.147中设置自定义工作区转到General项目的选项卡,然后单击Advanced...按钮,您将看到“使用自定义工作区”复选框。
Lyserty

6

有一个Jenkins插件,使您可以创建一个共享工作场所,并在需要该给定存储库中文件的每个作业上对其进行设置。

用例:

类似于您需要的,首先从同一个Git存储库创建两个作业,然后转到“ Manage Jenkins”,然后创建一个Shared Workspace。并指出,您需要从该文件中读取的每个作业上。

Jenkins插件

https://wiki.jenkins-ci.org/display/JENKINS/Shared+workspace+plugin#


PS:您应该考虑“已知问题”可以满足您的需求。

有时,在新复制的作业上,共享空间url参数在第一次“保存”时未保存到配置中,因此应确保两次保存作业。

^^这个还没有解决,我尝试了并且仍然发生。经过几次保存(请确保),该工作即可正常运行。


6

如果找不到Use custom workspace,可以在项目下找到它configure>General>Advanced>Use custom workspace


0

我尝试了继承插件,哇!当我只有一个钉子时,那东西就是大锤。

我最终添加了“在其他项目上触发参数化的构建”和“在同一节点上构建”和“预定义参数”的构建后操作。下游作业需要定义一个具有相同名称的参数(WORKSPACE_PARENT),但是可以将其保留为空白。然后,使用自定义工作空间定义下游作业(在“常规”>“高级”下)

之所以选择构建后操作,是因为构建工作的实际成功与下游构建的结果(目前)无关。如果要将下游作业的结果提高到父作业,则需要将其添加为构建任务,而不是后构建操作。

它非常适合我的需求。

家长的后期制作任务: 父母的建屋后工作

儿童的自定义工作空间: 儿童的自定义工作区

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.