为什么我的 Bluemix devops 管道的部署阶段找不到在构建阶段创建的 WAR 文件?

Why can't the deploy stage of my Bluemix devops pipeline find the WAR file that was created in the build stage?

我有一个 Java 应用程序可以在我的本地 Liberty 服务器 (Eclipse IDE) 上正常运行。我正在尝试使用持续交付管道将此应用程序部署到 Bluemix Liberty 服务器。该应用程序使用 Maven 构建器并且构建阶段成功完成。以下是构建日志的最后几行:

[INFO] Packaging webapp
[INFO] Assembling webapp [CPE2x] in [/home/pipeline/0102a7d2-42b8-42a4-98be-0481cd6d5293/target/CPE2x-1.0.0]
[INFO] Processing war project
[INFO] Copying webapp resources [/home/pipeline/0102a7d2-42b8-42a4-98be-0481cd6d5293/src/main/webapp]
[INFO] Webapp assembled in [144 msecs]
[INFO] Building war: /home/pipeline/0102a7d2-42b8-42a4-98be-0481cd6d5293/target/CPE2x-1.0.0.war
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 28.863 s
[INFO] Finished at: 2018-03-10T00:09:47+00:00
[INFO] Final Memory: 38M/74M
[INFO] ------------------------------------------------------------------------

但是,部署阶段立即失败,因为它找不到在构建阶段创建的 .war 文件。这是完整的部署日志:

Preparing to start the job...
Logging into Bluemix as user: "jimh@customer.com" 
Cloning the 'master' branch from repo 'https://git.ng.bluemix.net/jimh1/CPE_2x.git'
Repository successfully cloned
Target: https://api.ng.bluemix.net
Using manifest file /home/pipeline/e3050545-ef30-47f9-9cae-f2700d8d5431/manifest.yml

Updating app CPE_2x in org MyOrg / space dev as jimh@cogability.com...
OK

Using route CPE_2x.mybluemix.net
FAILED
Error processing app files: lstat /home/pipeline/e3050545-ef30-47f9-9cae-f2700d8d5431/target/CPE2x-1.0.0.war: no such file or directory

Finished: FAILED

明显的区别在于 .war 的路径,但我不知道这是真正的问题还是 build/deploy 过程的产物。路径中的长目录名称在每次尝试时都会发生变化,因此我倾向于认为这是一个转移注意力的问题。在任何一种情况下,我都无法让它继续前进。

我已经构建了许多 Node.js 项目并将其部署到 Bluemix,但这是我的第一个 Liberty for Java 应用程序。

您可以在选择 CICD 之前遵循一些渐进的步骤:(仅当您尚未这样做时)

  1. 对应用程序进行直接 cf 推送。并检查是否可以到达终点。
  2. 如果构建中有任何问题,那么您可以尝试将服务器与 war 一起打包并部署。并检查是否可以到达终点。
  3. 如果一切顺利,请使用 CICD 管道。如果以上两个作品CICD应该可以正常工作。

希望对您有所帮助。

我仍然不知道为什么会出现这个错误,但我确实找到了摆脱它的方法。我在交付管道的同一阶段同时拥有 build 作业和 deploy 作业。我将 deploy 作业移动到另一个阶段,错误消失了(现在有一个不同的错误,但至少它通过了这个)。

为什么我不能把他们放在同一个舞台对我来说仍然是个谜。