当前位置: 首页 > 知识库问答 >
问题:

通过Jenkins作业部署maven的策略

宋涵忍
2023-03-14

我有一个Jenkins的工作,它为master git分支使用maven构建目标“干净包部署”。但是,由于nexus repo不允许重新部署,如果Jenkins作业在没有版本更改的情况下第二次运行,它将失败并出现预期的400错误:

org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal 
    org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) 
    on project common-library: 
Failed to deploy artifacts: Could not transfer artifact 
    net.bacon.common:common-library:pom:1.2.13 from/to bacon-releases 
    (https://maven.bacon.com/nexus/content/repositories/releases): 
Failed to transfer file: 
    https://maven.bacon.com/nexus/content/repositories/releases/net/bacon/common/common-library/1.2.13/common-library-1.2.13.pom. 
Return code is: 400, ReasonPhrase:Bad Request.

有人能提出一种不同的策略吗?这样,部署目标就可以运行,而不会让Jenkins的工作失败?

共有3个答案

吕永寿
2023-03-14

您应该确保 master 上的每个提交在 pom 文件上都有自己的版本号。因此,您不会重新部署。

拒绝“重新部署”有一个很好的理由:已发布版本的内容永远不应该改变。

如果无法避免在 master 上提交相同版本号,请考虑将链接的 jenkins 作业更改为“全新安装”(仅将工件存储在本地存储库中),并使用“干净部署”创建一个仅手动启动的新作业。

劳星晖
2023-03-14

我们应用“双重行动”解决方案:

  • 增量版本
  • 运行mvn安装
  • 运行测试
  • 如果全部通过,我们运行mvn部署

这样,我们不会在知道所有通过之前尝试部署,并且每次都部署了一个唯一的版本。

我希望这有帮助。

红朝
2023-03-14

我们所做的是自动快照构建。然后,版本将自动递增。

对于版本构建,我们使用maven发布插件并手动输入版本。但是,您可以让发布插件来完成这项工作。它将删除“-SNAPSHOT”构建、部署,然后在下一个发布版本中增加最后一位数字并再次附加“-snap”。

对于分发管理,您可以有两个仓库,一个用于快照,一个用于发布,具有不同的重新部署设置。

 类似资料:
  • 我们正试图通过Jenkins将生成的war文件自动部署到web服务器。在tomcat服务器上使用Deploy plugin,我可以为普通war文件实现同样的功能。 对于Liferay portlet war文件,我不能使用我们将war文件放入Liferay中的deploy文件夹,然后将其复制到tomcat webapps文件夹的插件。 我看到的另一种方法是在pom.xml

  • 我有一个Maven3项目。有两个主要的EJB模块,比如说A和B,还有一个超级POM。当前的构建过程生成一个。zip文件,它由两个。ear文件组成,即a.ear和b.ear文件。然后将此ZIP文件夹手动部署到WebSphere。我们使用的是WAS8.0。有多个配置文件,如test、dev、local。我们提到mvn中的配置文件名(使用-p),我们希望为其生成一个构建。 现在,我们的构建和部署过程应该

  • 我配置了一个简单的maven freestyle项目。我能够成功构建该项目,但无法部署到Nexus。我得到这个错误: [错误]无法执行目标org.apache.maven.plugins:maven部署插件:2.8.1:部署(默认部署)项目eqs_utility:部署工件失败:找不到工件com.companyName.eqs:eqs_utility:jar:1.0.1-20190529.19124

  • 提示:找不到进程或命名空间日志 我的命令是:

  • 问题内容: 我想通过向Jenkins发送后卷曲请求来禁用Jenkins作业。 我尝试使用以下方法进行操作: 但每次都失败。我得到的错误是: 403请求中未包含有效面包屑 是否有基于卷曲的良好解决方案? 问题答案: 捏碎错误表明您正在使用CSRF保护。您需要在请求中包含适当的面包屑标头。面包屑可以从Jenkins API获得,如上面链接的JenkinsWiki页面所述。“使用curl和crumb触发

  • 问题内容: 我正在尝试编写一个Jenkins作业(例如CopyJob),该作业将复制另一个作业(在此作业中使用Multijob插件),并且还将其所有下游作业复制到新作业中。想法是要有一个Multijob作为模板,以便可以将其复制到新的Multijobs中(例如,用于特定的分支或功能)。 看到: 当手动触发“ CopyJob”时,它将使用新的SubJobs创建一个新的MultiJob: 到目前为止,