jenkins 回滚以前的部署版本

Cha*_*fot 5 rollback artifactory jenkins jenkins-pipeline

这是事情。我有一些 jenkins 管道作业,用于部署一些 java 后端应用程序。管道由来自 SCM 的脚本运行。该脚本是获取开发团队代码的脚本,并且: 1- 签出该代码 2- 编译并创建 WAR 3- 将 war 复制到 Web 服务器。

现在,开发人员想要实现回滚,并且如果运行了一项作业,并且新的部署已完成但失败了,他们希望返回到上一个运行良好的部署。

有没有办法在 jenkins 中做到这一点,例如使用 Jfrog artifactory?我们已经配置了 artifactory,我们可以将 WARS(或其他文件)上传到该仓库,但没有被使用。我不知道如何实现这一点。我在想对不同的 WAR 文件使用标签,如果部署失败,从工作正常的最新 WAR 中获取?这可能吗?如何使用 artifactory 在 jenkins 中完成这种方法。我可以在创建 WAR 之后实施一个新步骤,然后将该 WAA 上传到 artifactory,但是我如何将其与 jenkins 连接以使用我想要的 WAR?关于如何做到这一点的任何建议?谢谢你!

JRi*_*dsz 8

我建议您采用以下方法:

没有人工制造

在这种情况下,您只需参数化当前管道即可接收分支名称或标签作为参数。

工作流程可以是:

  • 在将发布分支合并到 master 之前,请验证先前稳定版本的标签是否存在或创建一个新版本。
  • 将您的版本(质量保证、测试或其他)合并到 master 分支
  • 使用master分支执行当前的管道。
  • 如果检测到某些错误,请使用 SCM(csv、svn、git 等)执行回滚。例如,bitbucket 在合并拉取请求部分有一个恢复选项。
  • 使用 master 分支作为参数再次执行相同的管道。如果无法回滚,请使用最后一个稳定标记作为参数执行此管道。

使用 Artifactory 或某些 Artifact Repository

在这种情况下,您需要采用软件版本控制策略。阅读此来源:

在最简单的模式下,您只需要构建战争的增量发布版本。Spring 版本的工作方式类似:

spring 发布版本

https://mvnrepository.com/artifact/org.springframework/spring-core

例如:

  • 现在,您已将5.0.0-RELEASE稳定版本保存在您的工件中并部署在生产环境中。
  • 晚上,执行您的管道,最后一步将您的 war api-5.0.0-RELEASE.war上传到您的工件。
  • 一个月后,您将获得新的发布版本5.0.1-RELEASE
  • 执行管道,如果检测到错误,只需下载以前的稳定版本(称为5.0.0-RELEASE)并将其部署为回滚步骤。

其他类似技术

  • 使用 docker 创建应用程序的构建并分配增量版本。