Jenkins同一构建的多个工件


72

有没有一种方法可以保存/归档来自同一构建的多个工件?

Jenkins仅允许执行一个“ Archive the Artifacts”后期构建步骤,而灰色在使用一次后便退出该选项。

也许ArtifactsArchiver允许多个模式?


1
仅供参考,这不是Jenkinsfile /管道构建中的限制。
simon.watts

Answers:


98

您可以使用Ant样式的模式,例如target/*.jar,存档多个工件。

如果您的文件不能与一种模式匹配,则可以使用逗号分隔的模式列表target/*.jar, target/*.war

?输入字段旁边的按钮显示此信息。


抱歉,我认为我的问题不是很清楚。我想要的是拥有两个不同的构建工件,而不仅仅是一个。我知道我可以使用通配符归档多个文件。我想要的是拥有两组不同的构建工件。
雷鸟2015年

1
如果我没有记错,您想要2种不同版本的工件,对吗?如果您知道第二个作业的名称并确保两个节点都在同一节点上运行,那么您可以给第二个作业指定路径以归档工件* / .jar(来自同一作业)/ home / jenkins / workspace / <JOB_NAME > / ** / *。jar(用于其他构建作业)。
vishal sahasrabuddhe

3
只需使用,答案中所述的逗号分隔不同的文件集。
拉里·蔡

46
只是注意到了吗?按钮未提及以逗号分隔的列表。感谢您提及它:)
GreenAsJade

3
归档文件夹-– archiveArtifacts '<folder_name>/**
Mohnish

36

您可以用逗号分隔路径,如下所示:

XXX.UnitTests\bin\Release\**.* , XXX.WriteAPI.Service/bin/Release/**.*

然后,您将获得两个单独的工件。

有关Ant模式语法的详细信息,请参见http://ant.apache.org/manual/Types/fileset.html


David,无论如何,我们在同一个仓库中为不同的路径构建了多个JAR?喜欢的方式,我在这里描述:stackoverflow.com/questions/44185868/...
凯文Ghaboosi

第一个模式之后的空格是否确实必要/相关?
mmigdol

@mmigdol可能您可以删除空间。请注意,根据Ant文档,您可以使用空格而不是逗号。所以我猜artifact1,artifact2artifact1artifact2都是有效的语法
David Lilljegren

10

如果您要保存两种不同类型的文件(例如zip文件和html文件),则可以使用

*.html,*.zip

它将帮助您将该目录中的所有zip文件和html文件存档。


5

不,詹金斯不只提供一种工件来保存。您可以使用通配符模式来处理任意数量的工件,例如All Jars-** / *。jar All War-** / *。war等。

** /表示任何目录。


OP从来没有说过,他或她说只能添加一个“归档工件”步骤。
克里斯·威瑟斯

0

此处的所有答案都显示了如何将多个文件模式组合为1个工件,这不是OP所要求的。

所要求的一个示例是,像单页Web应用程序构建那样,将针对环境的设置编译到JavaScript中以进行质量检查,登台和生产。

由于您希望将同一内部版本部署到多个环境,因此需要3个内部版本,每个内部都有自己的环境设置。部署归档文件时,您不想将所有3种内容都部署到每个环境中,而只提取该环境中的内容,因为每次复制所需的内容比每次所需的副本多66%的开销很大,并且容易出错。

因此,根据目标环境,在自己的工件中生成2个或更多构建并部署其中的1个工件是合理的。

Jenkins应该支持多个工件,而不仅仅是增加1个工件。


不,OP说:“也许ArtifactsArchiver允许多种模式吗?” 所以很明显,他希望在同一内部版本中有多个模式(其他答案都涵盖了)。另外,认为“工件”是单数也是错误的。因此,即使在您组成的情况下,也可以在同一构建中构建“测试”,“集成”和“生产”工件,然后使用单个选择器一次将它们全部存档-在不同的名称或目录下。
轻松
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.