【问题标题】:Access Jenkins host drive, beside the job workspace访问工作区旁边的 Jenkins 主机驱动器
【发布时间】:2015-11-13 09:15:30
【问题描述】:

我想与另一份 jenkins 工作的副产品分享。

我知道我可以设置“使用自定义工作区”,但这会将作业合并在一起;这不是我想要的。我只需要在一个位置移动几个文件,下一个作业会读取这些文件。

到目前为止,我不知道您实际上是如何告诉 Jenkins 作业查找特定文件夹的;因为它没有文件系统的概念,除了作业工作区文件夹中发生的事情。

有没有办法访问主机文件系统,或者在 jenkins 中声明一个共享文件夹(比如在包含所有其他作业的主工作区文件夹中?),所以我可以从不同的地方复制和读取其中的文件工作?

我希望尽可能避免使用插件和附加功能;我想使用 Jenkins 基础中包含的内容。

【问题讨论】:

    标签: jenkins


    【解决方案1】:

    我知道您想避免使用插件,但 Jenkins-y 实现此目的的方法是使用 Copy Artifacts plugin,它完全符合您的要求。

    在尝试自己管理文件系统时,您可能会遇到各种问题。 (在不同的构建节点上运行时如何发布到公共位置?如何处理不成功的构建?)该解决方案使用 Jenkins 来跟踪构建和工件。在没有单独的工件存储库的情况下,它比尝试自己管理要好得多。

    使用复制工件:

    • 作为构建后步骤,在第一个作业中选择“存档工件”并输入生成文件的路径。
    • 然后在第二个作业中,添加“从另一个项目复制工件”构建步骤以获取在第一个作业中标记为工件的部分或全部文件。 (默认情况下,Jenkins 将在第二个作业的工作区中重新创建生成文件的路径,这可能是也可能不是您想要的,但您可以更改此行为。)

    【讨论】:

    • 谢谢戴夫;我想没有其他办法了......我不明白为什么这不是标准詹金斯的一部分......你很少有不依赖于彼此的过程;如果您必须执行多个简单的步骤,而不是一个巨大的步骤,那么逻辑会要求您可能需要共享工件。
    • @newbiez Jenkins 并不局限于单一的构建系统,因此它必须在处理工件方面具有一定的灵活性。例如,Maven 构建和 GNU Make 构建之间的差异是巨大的。
    • @newbiez Jenkins 特意将所有功能与核心分离。这允许所有功能成为一个插件,可以独立于核心进行维护和更新。例如:如果“复制工件”是核心的一部分,并且需要更新,则您必须下载并升级整个 Jenkins 安装(如果您不使用该功能,则不是您想要的)。作为一个插件,它是独立更新的,如果你不需要它,你不要使用它。反正很多插件都是由原作者维护的。
    【解决方案2】:

    配置 Jenkins 以运行 Maven 构建,并使用“mvn clean deploy”部署您的工件这会将其推送到您可能拥有的“工件服务器”,如果没有,则需要添加/配置。

    然后在您的下游作业(也是一个 Maven 作业)中,您将其配置为依赖于在上游作业中发布的同一工件。这将触发从工件服务器下载工件并使其可用于构建。

    【讨论】:

    • @newbiez 是的,它可以,但这意味着您必须完成 Maven 会做的所有工作。您将需要某种方式来识别该项目,包括该项目的“修订”,以及某种识别位置的方式。您还需要某种方式将项目放在该位置,并从该位置检索项目,最好是通过网络。您需要某种方式来配置接收项目以“获取”正确的项目。所有这些都可以使用任何类型的工具或编程语言来完成,但有些工具已经为您处理了这些细节。
    猜你喜欢
    • 2012-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多