有人可以在构建过程中向我解释工件的想法吗?
我有工作区目录,在那里我查看代码来编译和运行我的ant脚本等。最后,在我的情况下,我得到一个准备好安装的jar文件。那被认为是神器吗?
我应该在哪里告诉我的构建脚本放置jar文件?在工作区目录中?我的jar文件根据BUILD_ID
这样的变量得到一个唯一的文件名,如何判断Jenkins选择哪个jar文件?
编辑: 好的,所以我尝试做这样的事情:
该路径在我的工作区中尚不存在,因为构建脚本应该创建它,当然,.jar
和.properties
文件不存在,因为它们尚未生成然而。为什么它会给我一个错误呢?好像我错过了一些东西。
此外,Jenkins是否在每次构建后删除工件(不是存档的工件,我知道我可以告诉它删除它们)?否则会很快堵塞硬盘。
答案 0 :(得分:64)
您的理解是正确的,Jenkins意义上的工件是构建的结果 - 构建过程的预期输出。
一个常见的约定是将构建结果放入build
,target
或bin
目录中。
即使每个版本都有一个唯一的名称,Jenkins归档程序也可以使用globs(target/*.jar
)轻松获取正确的文件。
答案 1 :(得分:11)
工件可以是构建过程的任何结果。重要的是它在构建它的客户端上无关紧要,它将从工作区转移回主服务器(服务器)并在那里存储一个指向构建的链接。优点是它以这种方式进行版本化,您只需在主服务器上设置备份,并且即使所有构建客户端都处于脱机状态,也可以通过Web界面访问所有工件。
可以将正则表达式定义为工件名称。在我的情况下,我在构建期间将所有要存储的文件压缩为一个具有常量名称的文件。
答案 2 :(得分:7)
此外,Jenkins会在每次构建后删除工件吗? (不是存档的工件,我知道我可以告诉它删除那些)
不,Hudson / Jenkins本身并没有在构建后清除工作区。您可能在构建过程中执行了从您离开它们的位置擦除,覆盖或移动构建工件的操作。在高级项目选项(必须扩展)中的作业配置中有一个选项,称为“构建前清理工作区”,它将在新构建开始时擦除工作区。
答案 3 :(得分:1)
在Jenkins 2.60.3中,有一种方法可以删除构建工件(而不是存档工件),以便在构建计算机上节省硬盘空间。在“常规”部分中,选中"放弃旧版本"战略" Log Rotation"然后进入高级选项。将出现另外两个选项,用于根据天数或构建数保留作业的构建工件。
对我来说有用的设置是输入1作为"最大的构建数#以保留工件"然后进行后期构建操作以存档工件。这样,所有构建中的所有工件都将被存档,构建中的所有信息都将被保存,但只有最后一个构建才会保留自己的工件。