【问题标题】:Mulesoft build failure on CI / CD server (bamboo / artifactory) that succeeds locally在本地成功的 CI / CD 服务器(竹 / 人工制品)上的 Mulesoft 构建失败
【发布时间】:2017-03-28 01:36:22
【问题描述】:

Mulesoft 构建仅在我们的 CI / CD 服务器上提供 'LifecycleException: failed to invoke lifecycle phase "start"' on DefaultHttpListenerConfig with a 'BindException address already in use'。

相应的构建和 munit 在本地成功,但是一旦 svn 在构建服务器上触发竹子/人工构建,错误(如下)甚至在 munit 运行之前就会发生('Tests: 0'),所以它似乎是在 pre - 调用测试。

我没有定义名为 DefaultHttpListenerConfig 的 HTTP 侦听器,并且我将 mule-app.properties 中的所有端口更改为 localhost(即使 munit 正在模拟所有 HTTP 端点)。

构建失败消息:

java.lang.RuntimeException: org.mule.api.lifecycle.LifecycleException: Failed to invoke lifecycle phase "start" on object: org.mule.module.http.internal.listener.DefaultHttpListenerConfig@2f07930a
build    28-Mar-2017 12:11:06        at org.mule.munit.runner.simple.MunitSimpleRunner.run(MunitSimpleRunner.java:54)
build    28-Mar-2017 12:11:06        at org.mule.munit.remote.path.ApplicationPathBuilder.buildApplicationPaths(ApplicationPathBuilder.java:80)
build    28-Mar-2017 12:11:06        at org.mule.munit.remote.path.ApplicationPathBuilder.getFlowPaths(ApplicationPathBuilder.java:41)
build    28-Mar-2017 12:11:06        at org.mule.munit.remote.CoverageManager.generateCoverageReport(CoverageManager.java:82)
build    28-Mar-2017 12:11:06        at org.mule.munit.remote.RemoteRunner.calculateCoverageIfApplicable(RemoteRunner.java:119)
build    28-Mar-2017 12:11:06        at org.mule.munit.remote.RemoteRunner.run(RemoteRunner.java:65)
build    28-Mar-2017 12:11:06        at org.mule.munit.remote.RemoteRunner.main(RemoteRunner.java:39)
build    28-Mar-2017 12:11:06    Caused by: org.mule.api.lifecycle.LifecycleException: Failed to invoke lifecycle phase "start" on object: org.mule.module.http.internal.listener.DefaultHttpListenerConfig@2f07930a
build    28-Mar-2017 12:11:06        at org.mule.lifecycle.phases.DefaultLifecyclePhase.applyLifecycle(DefaultLifecyclePhase.java:249)
build    28-Mar-2017 12:11:06        at org.mule.lifecycle.RegistryLifecycleCallback.doApplyLifecycle(RegistryLifecycleCallback.java:99)
build    28-Mar-2017 12:11:06        at org.mule.lifecycle.RegistryLifecycleCallback.onTransition(RegistryLifecycleCallback.java:71)
build    28-Mar-2017 12:11:06        at org.mule.lifecycle.RegistryLifecycleManager.invokePhase(RegistryLifecycleManager.java:155)
build    28-Mar-2017 12:11:06        at org.mule.lifecycle.RegistryLifecycleManager.fireLifecycle(RegistryLifecycleManager.java:126)
build    28-Mar-2017 12:11:06        at org.mule.registry.AbstractRegistryBroker.fireLifecycle(AbstractRegistryBroker.java:88)
build    28-Mar-2017 12:11:06        at org.mule.registry.MuleRegistryHelper.fireLifecycle(MuleRegistryHelper.java:141)
build    28-Mar-2017 12:11:06        at org.mule.lifecycle.MuleContextLifecycleManager$MuleContextLifecycleCallback.onTransition(MuleContextLifecycleManager.java:91)
build    28-Mar-2017 12:11:06        at org.mule.lifecycle.MuleContextLifecycleManager$MuleContextLifecycleCallback.onTransition(MuleContextLifecycleManager.java:87)
build    28-Mar-2017 12:11:06        at org.mule.lifecycle.MuleContextLifecycleManager.invokePhase(MuleContextLifecycleManager.java:69)
build    28-Mar-2017 12:11:06        at org.mule.lifecycle.MuleContextLifecycleManager.fireLifecycle(MuleContextLifecycleManager.java:61)
build    28-Mar-2017 12:11:06        at org.mule.DefaultMuleContext.start(DefaultMuleContext.java:311)
build    28-Mar-2017 12:11:06        at org.mule.munit.runner.MuleContextManager.startMule(MuleContextManager.java:77)
build    28-Mar-2017 12:11:06        at org.mule.munit.runner.MuleContextManager.startMule(MuleContextManager.java:71)
build    28-Mar-2017 12:11:06        at org.mule.munit.runner.simple.MunitSimpleRunner.run(MunitSimpleRunner.java:47)
build    28-Mar-2017 12:11:06        ... 6 more
build    28-Mar-2017 12:11:06    Caused by: java.net.BindException: Address already in use: bind
build    28-Mar-2017 12:11:06        at sun.nio.ch.Net.bind0(Native Method)
build    28-Mar-2017 12:11:06        at sun.nio.ch.Net.bind(Net.java:433)a

【问题讨论】:

  • (解决方法见下文。)

标签: mule anypoint-studio


【解决方案1】:

抛出此异常是因为您的 mule 测试配置正在使用您的竹服务器上已使用的端口。 你能在你的竹服务器上运行这个命令吗?当然 80 替换为您的测试使用的端口

sudo netstat -plnt | grep ':80'

如果你得到命令提示符的响应是这样的:

tcp        0      0 :::80                       :::*                        LISTEN      8448/httpd

这意味着该端口已被占用,在这种情况下您应该使用另一个端口进行测试配置。

【讨论】:

  • 当您说“您的测试使用的端口”时,您是指我为 my http 连接器(8085、8087、443)设置的实际端口,其中都被嘲笑了,还是munit 本身使用的端口(调试配置中的6661)? CI/CD 服务器正在运行 win server 2012,因此“netstat -plnt”不可用,但基本的“netstat”似乎没有显示任何我感兴趣的端口。
  • 已修复! 'netstat -a -n -p tcp'(在 Win 上)显示某些端口(8081、8085、443)正在用于 localhost,所以我将所有 HTTP 侦听器更改为不同的端口(包括 1443 而不是 443 用于 HTTPS / TLS)即使他们都被嘲笑(没有一个被命名为'DefaultHttpListenerConfig'),这似乎已经解决了问题。如果绑定异常命名了它失败的地址/端口,那就太好了......
  • 这就是我所说的!我很高兴你修好了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多