我尝试使用Mac OS从站上的SonarQube Scanner插件分析Jenkins中的TypeScript项目。
工具:
问题:
SonarTS插件尝试启动Node.js,但Node.js不在PATH
变量中,请参阅log:
Caused by: java.io.IOException: Cannot run program "node": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at org.sonar.plugin.typescript.ExternalTypescriptSensor.executeExternalRunner(ExternalTypescriptSensor.java:175)
研究:
我尝试在Mac上配置路径:
environment.plist
(来自https://stackoverflow.com/a/15313578/5277820)
但它不起作用,因为它不再受支持。/etc/launchd.conf
(来自https://stackoverflow.com/a/15257454/5277820)
但它不起作用,因为它不再受支持。/etc/paths.d/
(来自https://apple.stackexchange.com/a/106549)
但它不起作用(相同的错误消息)。我尝试使用已添加的路径(/usr/bin
,/bin
,/usr/sbin
,/sbin
):
我试图将路径传递给SonarQube扫描仪:
我还读到了关于在调用源中更改路径的信息:
ProcessBuilder#environment()
(来自https://stackoverflow.com/a/5155791/5277820)
但我没有尝试,因为我不想修补SonarQube扫描仪源(出于维护原因)。ProcessStarter#setGlobalSearchPath
(来自https://stackoverflow.com/a/15206961/5277820)
但我没有尝试,因为我不想修补SonarQube扫描仪源(出于维护原因)。另一种方法是使用Environment Injector Plugin(版本2.1.5):
摘要
EnvInject插件提供以下功能:
- 通过Jenkins Java进程删除继承的环境变量
- 在节点(主/从)启动时注入环境变量
- 在运行的SCM结帐之前或之后执行设置脚本
- 在运行的SCM结帐之前或之后注入环境变量
- 将环境变量注入为运行的构建步骤
- 为运行注入密码值
- 在构建结束时导出环境变量,以便了解用于每个构建的环境变量集
因此可以将Node.js的路径添加到PATH
变量: