【问题标题】:Jenkins: use artifacts from one build in another with directory structure詹金斯:使用目录结构中的另一个构建中的工件
【发布时间】:2014-04-09 19:07:18
【问题描述】:

我使用 Jenkins 作为 .NET/C++ Windows 产品的构建环境。 Jenkins 项目 A 将主要源代码编译成工件。项目 B 构建安装程序。项目 A 中的工件与在项目 B 中构建安装程序所需的目录结构不同。

我尝试使用 Copy Artifact Plugin 从项目 A 复制到 B,但是有一个 known limitation 我无法为副本指定不同的目录结构。

我在项目 B 中使用 NAnt 脚本来构建安装程序。我认为下一个最好的事情是将项目 A 工件从 NAnt 脚本复制到我需要它们的位置。是否可以从 NAnt 脚本中引用项目的工件以便复制它们?

【问题讨论】:

    标签: .net jenkins nant


    【解决方案1】:

    如果您的Project B 需要某种结构的工件,那么Project A 应该在该结构中提供它们。正如您所提到的,归档工件构建后操作不允许您指定工件的替代位置,但它确实在归档时保留它们的相对结构。

    因此,在Project A 中,在构建步骤之后(或在其中,取决于您如何称呼它),在执行之前 归档工件 组织工件。

    您可以编写一个简单的脚本,它将获取您的构建工件,并将它们复制到一个离散/唯一的文件夹下,我们称之为release 文件夹。然后告诉 Archive Artifacts 构建后操作仅归档 release 文件夹,例如 path\to\release\*.*

    由您的脚本以适合Project B 的结构组织release 文件夹中的工件。

    顺便说一句,没有什么说你不能将此逻辑移动到Project B,并按原样从Project A 复制工件,然后在Project B 上运行一个脚本,将它们移动到a,比方说,for_installer 文件夹,然后将该文件夹提供给 Project B 的打包过程

    至于“引用”工件:Copy Artifacts 插件将复制特定构建的工件(按编号或标签)。它默认为存档工件的位置(在“from”部分)和WORKSPACE(在“to”部分)。在上面的示例中,如果您的 Project A 将工件组织到 release 文件夹中,并且您将其归档为 path\to\release\*,那么在 复制工件 步骤中,将“要复制的工件”设置为 @ 987654338@,将“目标目录”留空直接放入Workspace,或指定目录

    【讨论】:

    • 谢谢@Slav,这些都是很好的建议。在使用 Copy Artifacts 之前或之后,我没有考虑在项目 A 或 B 中使用额外的逻辑(即使用 NAnt)来按照我需要的方式构建构建工件。我希望 Copy Artifacts 能够灵活地为我做到这一点,但显然它没有。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-25
    • 1970-01-01
    • 2011-12-31
    相关资源
    最近更新 更多