實驗的機器是CentOS 7.9 。
Jenkins里自動編譯.netcore項目的步驟:
1、Linux安裝netcore 的sdk
可以看這篇文章https://www.cnblogs.com/puzi0315/p/15534427.html
2、在Linux里測試下效果:
dotnet --info
dotnet --version
一切正常。
3、在Jenkins里創建任務測試,“構建”部分的代碼如下:
echo '============dotnet --info信息================' dotnet --info dotnet --version
則報錯:信息如下:
/tmp/jenkins11995557596560651774.sh:行9: dotnet: 未找到命令
/tmp/jenkins11995557596560651774.sh:行10: dotnet: 未找到命令
分析原因,
(1)sh腳本不支持dotnet命令,我寫了個.sh腳本執行發現是正常了。這個點排查。
(2)JenKins調用的sh的版本所致。解決方案是在命令的最上部加一句話,指定使用bash 。(這種方案被證實也是不行的)
#!/bin/bash -il
完整的腳本如下:
#!/bin/bash -il echo '============查看打包環境================' pwd ls echo $PATH whoami echo '============dotnet --info信息================' dotnet --info dotnet --version
結果還是報錯,
bash: dotnet: 未找到命令
bash: dotnet: 未找到命令
這就比較糾結了,問題還沒有解決。又找了好多天,終於發現了個解決方案。
解決方案如下:
4、將linux的環境變量配置到jenkins中。
(1)、在linux中輸入 echo $PATH
(2)、找到jenkins的系統配置-->環境變量
全局變量里設置PATH值即可。
“構建”里的代碼還是如下圖,再次構建就成功了。腳本不需要第一句的那句話也可以的。
其實我也不知道為啥就好了。難道是JenKins調用的sh所使用的路徑,只用了其中一個路徑所致?