【问题标题】:jenkins rollback previous version of deploy詹金斯回滚以前版本的部署
【发布时间】:2019-03-14 07:53:24
【问题描述】:

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

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

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

【问题讨论】:

    标签: jenkins jenkins-pipeline artifactory rollback


    【解决方案1】:

    我建议你这些方法:

    没有人工制品

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

    工作流程可以是:

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

    使用 Artifactory 或一些 Artifact Repository

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

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

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

    例如:

    • 今天,您有一个 5.0.0-RELEASE 稳定版本保存在您的工件中并部署在生产环境中。
    • 在晚上,执行您的管道并作为最后一步将您的战争 api-5.0.0-RELEASE.war 上传到您的工件。
    • 一个月后,您有一个新的发布版本5.0.1-RELEASE
    • 执行您的管道,如果检测到错误,只需下载名为 5.0.0-RELEASE 的先前稳定版本并将其部署为回滚步骤。

    其他类似技术

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

    【讨论】:

    • 我想我会选择第二个选项 With artifactory。谢谢!
    • 只是一个疑问。我从来没有这样做过,但是,你如何用詹金斯从神器中抓取神器?这不是一个 Maven 项目,它只是一个使用 groovy 文件的管道。我必须制作一个 maven 项目还是仍然可以使用管道?
    • 不客气。你也可以试试这个 jenkins 插件:jfrog.com/confluence/display/RTF/Jenkins+Artifactory+Plug-in
    • 据我所知,创建 docker 镜像只是一种如何发布应用程序的方式,但它不控制部署或回滚操作。因此,我可以以非人工方式(控制应通过 git 合并和恢复发送的内容)或以人工制品存储库方式使用 docker 图像,其中图像被创建为人工制品,并且我有一些其他工具来控制来自哪些人工制品应部署存储库,例如在回滚操作中。还是我弄错了?
    【解决方案2】:

    作为 Artifactory 的替代品,您可以使用 Github 版本或 Gitlab 包并遵循以下场景(假设像 prod.build_number.short_commit_hash 这样的版本控制方案):

    1. 昨天晚上你发布了 prod.32.ehR456e 版本
    2. 今天看来这个版本在prod中出现了问题。
    3. 使用自动部署管道,通过重新部署存储在 github 版本或 gitlab 包中的版本 prod.31.fBr451e 进行回滚。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-23
      • 2012-03-05
      相关资源
      最近更新 更多