一、問題描述
在使用BaGet進行包管理時中,上傳symbols產生400報錯:
github action中報錯資訊
supercisord中報錯資訊
二、問題分析
控制臺中輸出的錯誤資訊僅限于請求狀態碼400,想要找到詳細的報錯原因,我們需要從https://github.com/loic-sharma/BaGet/ 下載源代碼,找到對應symbols上傳方法:
BaGet.Web
-> SymbolController
-> async Task Upload(CancellationToken cancellationToken)
本地進行代碼除錯時,并不會出現此錯誤,可以判斷為服務器環境差異導致,在相關的方法中增加跟蹤代碼:
BaGet.Core
-> SymbolIndexingService
-> async Task<IReadOnlyList<string>> GetSymbolPackagePdbPathsOrNullAsync(PackageArchiveReader symbolPackage,CancellationToken cancellationToken)
方法中捕獲例外:
Required environment variable 'HOME' is not set.
三、解決方法
通過在專案運行Supervisord中修改environment引數來進行修復:
environment=ASPNETCORE__ENVIRONMENT=Production,DOTNET_CLI_HOME=/temp
增加完DOTNET_CLI_HOME后運行正常,
注意:如果專案運行是在supervisord下進行管理的
[program:local.nuget.keeplive]
command=dotnet BaGet.dll
directory=/srv/website/dotnet/nuget
environment=ASPNETCORE__ENVIRONMENT=Production,DOTNET_CLI_HOME=/temp
user=root
stopsignal=INT
autostart=false
autorestart=true
startsecs=3
stderr_logfile=/var/log/local.nuget.keeplive.err.log
stdout_logfile=/var/log/local.nuget.keeplive.out.log
修改配置后記得運行 supervisorctl update 后重啟應用
關聯issue:https://github.com/loic-sharma/BaGet/issues/726
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/499227.html
標籤:.NET Core
