是否有将 Jenkins 的构建与 Maven (Nexus) 工件联系起来的插件
Posted
技术标签:
【中文标题】是否有将 Jenkins 的构建与 Maven (Nexus) 工件联系起来的插件【英文标题】:Is there a plugin that ties Jenkins' builds to Maven (Nexus) artifacts 【发布时间】:2012-04-10 23:56:02 【问题描述】:我想知道是否有一个 Hudson/Jenkins 插件将存储库工件与创建它们的构建联系起来?我正在查看问题 "remove artifacts from nexus repository" 并认为在 Jenkins 中删除构建还应该提供删除构建创建的工件的选项。
我们目前正在运行 Jenkins 1.447 和 Nexus 开源 1.9.2.3。我们的 Jenkins 构建使用 Maven 部署目标在我们的 Nexus 存储库中创建工件。我似乎一旦部署了这些工件,就没有类似的自动化机制来删除它们。我们希望将 Jenkins 构建与其 Nexus 工件联系起来。我想如果我们决定从 Jenkins 中删除构建,我们对构建没有用处,因此也不需要为该构建存储工件。我们希望删除构建以触发删除 Nexus 工件。
如果没有可用的东西,我想我可以开始写一些东西,但我想看看其他人是如何处理这个问题的。
【问题讨论】:
您要删除哪种工件? 您是在谈论 SNAPSHOT 还是版本? 抱歉耽搁了。这些将是版本。我们根据 hudson/jenkins 内部版本号对工件进行版本控制。可以想象,随着时间的推移,这在多模块应用程序上会变得相当大。 这听起来像是在滥用 Maven 和 Nexus 中的发布构建和 SNAPSHOT 的想法,因为一旦发布发布就永远不应该被删除。 @khmarbaise 链接到这方面的最佳实践文档会很有帮助。谢谢! 【参考方案1】:您可以使用 Nexus 的 REST API 构建您自己的 Jenkins 插件,为您完成这项工作。您可以使用 Nexus 自定义元数据插件存储 Jenkins Build Job 编号。删除构建后,您可以让您的自定义 Jenkins 插件删除 Nexus 中在其元数据中具有该构建号的所有工件。我有一个类似的问题并编写了一个自定义 Jenkins 插件。在 github 上查看教程和源代码。它应该很简单。
教程: http://blog.codecentric.de/en/2012/08/tutorial-create-a-jenkins-plugin-to-integrate-jenkins-and-nexus-repository/
源代码: https://github.com/marcelbirkner/nexus-metadata-plugin/
【讨论】:
为什么和如何做有很多细节,但这就是答案,也是我最终做的。【参考方案2】:您可以通过maven-dependency-plugin 从本地存储库中清除工件。
【讨论】:
根据这个插件的描述,它将“从本地存储库中删除项目依赖项,并可选择重新解析它们。”我希望将 Nexus 中的工件与我在 Jenkins 中的构建“同步”。 在 Jenkins 中,您可以定义让 maven 使用服务器的存储库(运行 Jenkins 的用户)或本地基于可以根据您使用的 Maven 插件配置的构建。同步由您的构建完成。所以我不明白你真正想要实现的目标。 我已经稍微更新了我的问题,希望能更清楚。也许您所说的某些设置我错过了?【参考方案3】:如果您有一个版本,那么根据构建服务器的编号对其进行编号是没有意义的。通常的用例是为此目的使用 SNAPSHOT。此外,通常的用例是在一段时间后从 Nexus 中删除基于计划任务的 SNAPSHOT,但永远不会从 Nexus 中删除版本。
【讨论】:
【参考方案4】:由于您知道发布的名称,您可以构建自定义作业或触发器以使用 wget 命令从 nexus 存储库中删除工件。
作为 Nexus 中的正确用户,您确实可以删除发布工件,而不仅仅是 SNAPSHOTS。
【讨论】:
以上是关于是否有将 Jenkins 的构建与 Maven (Nexus) 工件联系起来的插件的主要内容,如果未能解决你的问题,请参考以下文章