【问题标题】:Why can't the deploy stage of my Bluemix devops pipeline find the WAR file that was created in the build stage?为什么我的 Bluemix devops 管道的部署阶段找不到在构建阶段创建的 WAR 文件?
【发布时间】:2018-03-10 00:30:08
【问题描述】:

我有一个在本地 Liberty 服务器 (Eclipse IDE) 上运行良好的 Java 应用程序。我正在尝试使用持续交付管道将此应用程序部署到 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 的路径,但我不知道这是否是真正的问题,或者它是否是构建/部署过程的产物。每次尝试都会更改路径中的长目录名称,因此我倾向于认为这是一个红鲱鱼。无论哪种情况,我都无法让它超过这一点。

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

【问题讨论】:

  • 您是否查看过第一阶段配置中构建应用程序的目录?它可能需要target

标签: ibm-cloud websphere-liberty continuous-delivery


【解决方案1】:

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

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

希望对你有帮助。

【讨论】:

    【解决方案2】:

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

    为什么我不能把它们放在同一个阶段对我来说仍然是个谜。

    【讨论】:

    • 大卫,这是按预期工作的。阶段中的所有作业都通过阶段的输入选项卡上指定的(相同)输入。如您所见,要让一个作业使用前一个作业的输出,请将它们分成不同的阶段。
    • 根据我所看到的,您的解释完全有道理。很高兴知道,因为我有另一个项目可以利用这种行为。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2020-07-04
    • 2020-12-15
    • 2022-11-28
    • 1970-01-01
    • 1970-01-01
    • 2018-09-26
    • 1970-01-01
    • 2020-11-23
    相关资源
    最近更新 更多