135

有人可以向我解释构建过程中工件的想法吗?

我有工作区目录,我可以在其中检查代码以编译和运行我的 ant 脚本等。最后,就我而言,我得到了一个可以安装的 jar 文件。这被认为是神器吗?

我应该告诉我的构建脚本将 jar 文件放在哪里?在工作区目录中?我的 jar 文件根据诸如此类的变量获得一个唯一的文件名BUILD_ID,我如何告诉 Jenkins 选择哪个 jar 文件?

编辑:好的,所以我尝试做这样的事情:

在此处输入图像描述

该路径在我的工作空间中尚不存在,因为构建脚本应该创建它,当然,.jarand.properties文件不存在,因为它们尚未生成。为什么它会给我一个错误呢?好像我错过了什么。

此外,Jenkins 是否会在每次构建后删除工件(不是存档的工件,我知道我可以告诉它删除那些)?否则它会很快堵塞硬盘。

4

4 回答 4

68

您的理解是正确的,Jenkins 意义上的工件是构建的结果 - 构建过程的预期输出。

一个常见的约定是将构建的结果放入build,targetbin目录中。

Jenkins 归档器可以使用 glob ( target/*.jar) 轻松获取正确的文件,即使您每次构建都有唯一的名称。

于 2011-04-28T16:11:54.907 回答
11

工件可以是构建过程的任何结果。重要的是,无论它是在哪个客户端上构建的,它都会从工作区传输回主服务器(服务器)并存储在那里,并带有指向构建的链接。优点是它以这种方式进行版本化,您只需在主服务器上设置备份,并且即使所有构建客户端都处于脱机状态,所有工件都可以通过 Web 界面访问。

可以将正则表达式定义为工件名称。在我的例子中,我在构建过程中将所有想要存储的文件压缩到一个具有常量名称的文件中。

于 2011-04-28T16:14:20.303 回答
7

此外,Jenkins 是否会在每次构建后删除工件?(不是存档的工件,我知道我可以告诉它删除那些)

不,Hudson/Jenkins 本身不会在构建后清除工作区。您的构建过程中可能有一些操作会擦除、覆盖或移动您离开它们的构建工件。作业配置中有一个选项,在高级项目选项(必须扩展)中,称为“构建前清理工作区”,它将在新构建开始时擦除工作区。

于 2015-01-09T17:06:01.997 回答
2

在 Jenkins 2.60.3 中,有一种方法可以删除构建工件(不是存档的工件),以节省构建机器上的硬盘空间。在 General 部分中,使用策略“Log Rotation”选中“Discard old builds”,然后进入其 Advanced 选项。将出现另外两个选项,这些选项与根据天数或构建保留作业的构建工件有关。

对我有用的设置是为“与工件保持一致的最大构建数”输入 1,然后执行构建后操作来归档工件。这样,来自所有构建的所有工件都将被存档,来自构建的所有信息都将被保存,但只有最后一个构建将保留其自己的工件。

丢弃旧的构建选项

于 2017-11-28T17:55:29.857 回答