【问题标题】:Archive the artifacts in Jenkins在 Jenkins 中归档工件
【发布时间】:2011-08-14 20:38:07
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 您遇到的错误很可能不是问题 - 如果构建过程成功,则应该创建它。保存并尝试一下,在设置管道时有一些损坏的构建是完全正常的。 :)
  • 不要被警告吓到,如果在构建后生成了一个工件,它会被你的配置归档(虽然配置页面有警告)。

标签: continuous-integration hudson archive jenkins artifacts


【解决方案1】:

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

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

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

【讨论】:

  • @Andres 谢谢,另外,jenkins 是否会在每次构建后删除工件(不是存档的工件,我知道我可以告诉它删除那些)?还是我自己负责?
  • @michael:您必须自己清理工作区,最好在每次构建之前至少清除目标目录,以确保您不会得到早期构建的结果。
  • @Michael 您可以添加一个“干净”的构建步骤。例如。与 Maven - sh 'mvn clean package'
  • @AndersLindahl - “常见的约定是将构建的结果放入构建、目标或 bin 目录中。”您指的是所有项目共享的 bin 目录?我怎么做?它是构建后操作吗?
  • @user3240688 不,我指的是每个项目的目标文件夹。如果您希望将多个作业中的工件放到一个共享文件夹中,则必须使用例如“Publish over $PROTOCOL”插件之一来发布工件。
【解决方案2】:

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

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

【讨论】:

  • “可以将正则表达式定义为工件名称。在我的例子中,我压缩了所有文件”你能解释一下吗?这听起来正是我想要的?
【解决方案3】:

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

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

【讨论】:

    【解决方案4】:

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

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

    Discard old builds options

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-09
      • 2019-04-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多