安装Node.js后,Bamboo远程构建代理无法找到powershell.exe

12

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

远程的Bamboo构建代理正在以用户MyDomain\MyUser的身份作为windows服务运行。当执行带有内联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的绝对路径 - 但我不想这样做。

我已经搜索了解决方案,但即使这个看起来相关: Hudson在更新到PowerShell 3后找不到powershell - 提出的解决方案也无法解决问题。

我错过了什么?

2个回答

17

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


4
太好了,这是个绝妙的建议。我将用户变量的内容移动到系统变量中,删除了用户变量路径,现在一切正常工作。我简直不敢相信构建代理没有合并这两个路径变量。无论如何,这真的很好知道。再次感谢你。 - Lasse Christiansen
3
在一切都崩溃的周一早上,你挽救了我。这是一颗定时炸弹 - 自从节点更新以来已经过去了相当多的天数 - 但只有当服务器由于 Windows 升级而重新启动时,代理程序重新启动并开始出现错误。 - ankhansen
1
如果可以的话,我会给这个答案点赞多次。我在几个Bamboo安装中都遇到过这种情况,而且我一直回到这个答案!清除用户路径变量就可以解决问题。 - James G
用户PATH变量的存在可能会导致Bamboo始终失败,并显示消息“任务失败,因为返回代码为XXX,而预期为0”,这适用于PowerShell Inline和File任务 - 与https://community.atlassian.com/t5/Bamboo-questions/Bamboo-Powershell-script-always-fails-with-quot-Failing-task/qaq-p/263898中描述的相同问题。如果发生这种情况,只需删除用户PATH变量即可 :) - tholesen

1
根据Atlassian支持页面,这与Java Service Wrapper中的一个错误有关。由于我的系统中没有用户PATH变量,我尝试了Workaround-2。我不得不卸载代理机器上的bamboo代理服务和Java 64版本来应用workaround-2。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接