【问题标题】:Bamboo remote build agent cannot find powershell.exe after installing nodejsBamboo远程构建代理安装nodejs后找不到powershell.exe
【发布时间】:2015-05-12 06:16:34
【问题描述】:

我刚刚在我的一个构建服务器(Win Server 2008 R2)上安装了 nodejs,它承载了一个 Bamboo 远程代理。完成安装并重新启动后,我陷入了以下情况:

远程 Bamboo 构建代理作为 Windows 服务运行,用户为 MyDomain\MyUser。当执行带有内联 powershell 任务的构建时,它会失败并出现错误(来自构建代理日志):

com.atlassian.utils.process.ProcessNotStartedException: powershell could not be started
...
java.io.IOException: Cannot run program "powershell"
...
java.io.IOException: CreateProcess error=2, The system cannot find the file specified

以 MyDomain\MyUser 身份登录服务器,我检查了 powershell 是否在路径中:

where powershell
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

我已尝试重新启动服务并多次重新启动机器。没有运气。唯一可行的是,如果我将脚本作为具有 powershell 绝对路径的 bat 文件执行 - 但我不希望这样。

我已经搜索了这方面的解决方案,但即使这个似乎相关:Hudson cannot find powershell after update to powershell 3 - 建议的解决方案不起作用。

我在这里错过了什么?

【问题讨论】:

    标签: windows node.js powershell continuous-integration bamboo


    【解决方案1】:

    如果您默认安装 nodejs,您会看到它会将 nodejs 和 npm 添加到路径中。有时我看到安装程序添加了一个名为 PATH 的用户变量 - 可能是 Bamboo 代理决定读取用户路径而不将其与系统路径“合并”。我认为值得一试。

    【讨论】:

    • 绝妙的建议——这就是诀窍。我将用户变量的内容移动到系统变量中,删除了用户变量 PATH,一切又恢复了。我不敢相信构建代理没有合并两个 PATH 变量。无论如何,这真的很高兴知道。再次感谢。
    • 拯救了我周一早上的一切。真是个定时炸弹——自从节点更新以来已经有好几天了——但只有当服务器由于 Windows 升级而重新启动时,代理才会重新启动并且错误开始发生。
    • 如果可以的话,我会多次投票。我在几次 Bamboo 安装中都发生了这种情况,我只是不断地回到这个答案!清除 USER 路径变量就可以了。
    • 用户 PATH 变量的存在也可能导致 Bamboo 总是失败并显示消息“任务失败,因为 XXX 的返回码为 -1 而预期为 0”,这适用于 PowerShell 内联和文件任务- 与community.atlassian.com/t5/Bamboo-questions/… 中描述的问题相同。如果发生这种情况,只需远程用户 PATH 变量 :)
    【解决方案2】:

    根据Atlassian support page,这与 Java Service Wrapper 中的错误有关。我尝试了 Workaround-2,因为我的系统中没有用户 PATH 变量。我必须从代​​理机器上卸载竹代理服务和 Java 64 版本才能应用解决方法 2。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-15
      • 1970-01-01
      • 2011-11-18
      • 2022-07-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多