Jenkins:使用目录结构从另一个构建中使用工件

时间:2014-04-09 19:07:18

标签: .net jenkins nant

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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

BTW,没有任何内容表示您无法将此逻辑移至Project B,并将{strong>复制工件保留在Project A中,然后在{{1}上运行脚本}它会将它们移到一个,比方说Project B文件夹中,然后将该文件夹提供给for_installer的打包过程

至于"参考"工件:复制工件插件将复制特定构建的工件(按编号或标签)。它默认为归档工件的位置(在"来自"部分)和Project B(在"到"部分)。在上面的示例中,如果您的WORKSPACE将工件组织到Project A文件夹中,并将其归档为release,那么在复制工件步骤中,设置& #34;要复制的文物"作为path\to\release\*,并离开"目标目录"空白直接放在工作区中,或指定目录