SCP neo deploy-mta 无法连续部署 2 个版本

SCP neo deploy-mta can't deploy 2 versions in a row

我正在使用在服务器上运行的 Jenkins。 我有一个由用户触发的管道,该用户将某些内容推送到 GitHub 存储库。 它执行一个脚本,确保 GitHub 存储库部署到 SAP Cloud Platform。

它使用 MTA Archive Builder 来构建创建 .mtar 文件的 MTA 应用程序。 MTA 应用程序有一个 HTML5 模块。 使用 MTA Archive Builder 构建 .mtar 文件后,我使用 NEO Java Web SDK(执行 neo deploy-mta 所需的库)部署它。 "neo deploy-mta" 是执行部署 html5 应用程序的实际请求的命令。 这工作正常,项目已成功部署到 SAP Cloud Platform 上。 问题是:如果用户在 GitHub 上快速推送 2 次,我的 Jenkins 管道将被触发两次并执行 "neo deploy-mta" 2 次。

正常情况下SAP Cloud平台应该部署2个版本,但我看它只部署了第一个部署请求。所以它跳过了第二个部署请求。

我的问题是,当发生2次推送时,如何确保SAP Cloud Platform上部署了2个版本?

这很可能是因为 SAP MTA 部署程序检测到您正在进行另一个部署,因此停止了第二个部署。

一个版本是通过 Jenkins 确保您不会 运行 在第一个构建完成之前进行第二个构建。您可以借助类似锁/信号量的机制来执行此操作。有几种方法可以通过 Jenkins 插件做到这一点:

另请参阅How can I prevent two Jenkins projects/builds from running concurrently?

Jenkins 实例已经在等待,直到没有构建 运行。 问题是当有 2 个部署请求时,SAP Cloud Platform 没有部署 2 个版本。

这个问题的解决方法是在"neo deploy-mta"命令中添加"--synchronous"参数。现在此脚本将等到 SAP Cloud Platform 上没有部署(针对此应用程序)运行。