【问题标题】:Jenkins Deploy Artifacts to Nexus using Deploy to Maven RepositoryJenkins 使用 Deploy to Maven Repository 将工件部署到 Nexus
【发布时间】:2016-10-19 17:47:21
【问题描述】:

我们有一个场景将从 maven 构建生成的工件部署到 Nexus。 Jenkins 工作将运行目标clean package。如果 pom.xml 具有 SNAPSHOT 版本,则工件应转到 SNAPSHOT 存储库。如果 pom.xml 有发布版本,工件应该去发布 repo。知道我们如何使用 Deploy to Maven Repository 插件来实现这一点。截至目前,我在 Execute Shell 中使用以下脚本。

#!/bin/bash
var1=$1
var2="SNAPSHOT"
if [[ $(echo "$var1"|grep -i "$var2" | wc -l | tr -d ' ') -gt 0 ]]; then
   exit 1
else
   exit 0
fi

在灵活发布后构建操作中,我使用的是执行 Shell 条件操作。根据脚本的结果,我将执行 Deploy to Maven repository post build 操作。这只能帮助部署以发布 repo。有什么更好的方法。

【问题讨论】:

    标签: java maven jenkins jenkins-plugins nexus


    【解决方案1】:

    我假设如果您无法更新存储库中的 pom 文件,您有两种选择:

    1. 有一个Maven Project plugin,它允许您添加一个新的构建后操作Deploy artifacts to Maven repository。它允许您设置存储库 URL 和名称,以及一些其他选项。将具有snapshot 策略的存储库设置为目标将导致成功上传快照工件。注意
      • 该步骤仅在构建类型为 Maven build (2/3) 时可用
      • 如果您尝试上传发布工件,上传将失败并出现 Bad request 错误
    2. 如果添加插件不是一个选项,您可以通过类似sed 的方式使用肮脏的hack 并即时更改pom 文件作为第一个构建步骤。这是有风险的,如果不是绝对不可避免,则不应使用。

    要一次更新所有构建,我建议使用一些插件(Configuration Slicing plugin 作为选项)或直接通过 CLI 中的脚本更改 config.xml 文件,然后在 Jenkins 中使用“重新加载配置”。

    【讨论】:

      【解决方案2】:

      我相信这个功能是 Maven 本身内置的;您可以在 <distrobutionManagement> 块中指定不同的 <repository> 和 <snapshotRepository>。 (见docs)

      【讨论】:

      • 我们从 1000 个 git 存储库中提取了 1000 多个工作。这种方法需要所有 1000 个项目来更新 pom.xml 仪式?
      • 是的,除非它们共享一个共同的 root-pom,您可以在其中定义共同的配置。
      • 大部分是旧版应用程序。还有其他选择吗?
      猜你喜欢
      • 2012-05-19
      • 2021-06-01
      • 2018-04-07
      • 2014-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-06
      相关资源
      最近更新 更多