【问题标题】:Same workspace for multiple jobs多个工作的相同工作区
【发布时间】:2014-02-03 05:41:02
【问题描述】:

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

【问题讨论】:

  • 您可以使用自定义工作区stackoverflow.com/questions/20537137/…
  • 如果您确实使用相同的工作区,您将需要确保您没有并发,并且您可以正确跟踪两者之间的修订。如果您在开发作业开始检出代码时正在分析代码,则可能会发生并发。有关于如何防止此站点上的问题的插件(和答案)。 (完全披露:我们尝试了一个公共工作区,并认为使用克隆工作区插件与单独的工作区效果更好。)
  • 若要轻松完成此并发,请从开发作业触发分析作业,并在分析作业上勾选高级项目选项“上游项目正在构建时阻止构建”。

标签: jenkins jenkins-plugins jenkins-cli


【解决方案1】:

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

【讨论】:

  • 这是一条不错的路径...但我会更进一步,并使用wiki.jenkins-ci.org/display/JENKINS/inheritance-plugin 继承 ${WORKSPACE},因此不必在所有工作中都对其进行硬编码- 维护起来会更干净。
  • @thekbb,这将是一个选项,除了与 JobConfigHistory 插件一起使用时发生的堆栈溢出。在维护者纠正该问题之前,对于需要 JobConfigHistory 插件来处理使用继承的作业的任何人来说,它都是无用的......
  • 主节点 (job//workspace) 和从节点 (workspace/) 的工作空间目录不同。因此硬编码涉及脚本和插件。
  • 根据wiki.jenkins-ci.org/display/JENKINS/inheritance-plugin,stackoverflow 似乎仍然是一个问题
  • 仅供参考,在 Jenkins 版本 2.147 中设置自定义工作区转到项目的 General 选项卡,然后单击 Advanced... 按钮,您将看到“使用自定义工作区”复选框。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    用例:

    与您的需要类似,首先从同一个 Git 存储库创建两个作业,然后转到“管理 Jenkins”并创建一个 共享工作区。并指出它,在您需要从该文件中读取的每项工作中。

    Jenkins 插件

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


    PS:您应该调查“已知问题”可能会破坏您的需求。

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

    ^^ 这一个它仍然未解决,我尝试过并且仍然发生。经过几次保存(只是为了确定)后,作业运行完美。

    【讨论】:

      【解决方案4】:

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

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

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

      它非常适合我的需要。

      Parent 的后期构建任务:

      孩子的自定义工作区:

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-15
      • 1970-01-01
      • 2016-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-20
      • 2021-09-23
      相关资源
      最近更新 更多