jenkins 回滚以前的部署版本

标签 jenkins jenkins-pipeline artifactory rollback

这是事情。我有一些 jenkins 管道作业,用于部署一些 java 后端应用程序。管道由来自 SCM 的脚本运行。此脚本是获取开发团队代码的脚本,并且:
1- checkout 该代码
2-编译和创建WAR
3- 将 war 复制到 Web 服务器。
现在,开发人员想要实现回滚,并且如果运行了一项作业,并且新的部署已完成但失败了,他们希望返回到上一个运行良好的部署。
有没有办法在 jenkins 中做到这一点,例如使用 Jfrog artifactory?我们已经配置了 artifactory,我们可以将 WARS(或其他文件)上传到该仓库,但没有被使用。我不知道如何实现这一点。我在想对不同的 WAR 文件使用标签,如果部署失败,从工作正常的最新 WAR 中获取?这可能吗?如何使用 artifactory 在 jenkins 中完成这种方法。我可以在创建 WAR 后实现一个新步骤,然后将该 WAA 上传到 artifactory,但是我如何将其与 jenkins 连接以使用我想要的 WAR?关于如何做到这一点的任何建议?
谢谢你!

最佳答案

我建议你这些方法:
没有Artifactory
在这种情况下,您只需要参数化当前管道以接收分支名称或标记作为参数。
工作流程可能是:

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

  • 使用 Artifactory 或一些 Artifact Repository
    在这种情况下,您需要采用软件版本控制策略。
    阅读此来源:
  • https://docs.oracle.com/middleware/1212/core/MAVEN/maven_version.htm#MAVEN400
  • https://stackoverflow.com/a/46967235/3957754

  • 在最简单的模式下,您只需要构建 war 的增量发布版本。 Spring 版本的工作方式类似:
    spring-release-versions
    https://mvnrepository.com/artifact/org.springframework/spring-core
    例如:
  • 今天你有一个 5.0.0-发布 稳定版本保存在您的 Artifactory 中并部署在生产环境中。
  • 晚上,执行您的管道并作为最后一步上传您的 war api-5.0.0-RELEASE.war 到你的神器。
  • 一个月后,你有一个新的发布版本 5.0.1-发布 .
  • 执行您的管道,如果检测到错误,只需下载名为 的先前稳定版本。 5.0.0-发布 并将其部署为回滚步骤。

  • 其他类似技术
  • 使用 docker 创建应用程序的构建并分配增量版本。
  • 关于jenkins 回滚以前的部署版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52722666/

    相关文章:

    jenkins - 中止的 Jenkins 管道作业继续在后期运行

    csv - Jenkins 管道,解析 csv

    android - 如果发生错误,有没有办法让 DexGuard 以错误条件退出?

    jenkins - jenkins字符串参数的字符串长度限制是多少

    git - 更新 Github 存储库时出现 jenkins 错误

    java - 也许您正在 JRE 而不是 JDK 上运行

    tomcat - Artifactory 设置 HTTPS

    docker - 如何将 docker 镜像从私有(private)第三方注册表迁移到 Google Artifactory 注册表?

    java - 我如何配置artifactory作为Java持久性的eclipse链接的镜像?

    jenkins - 是否可以从 "Build other Projects"下的常规 Jenkins 作业触发多分支管道作业?