一、問題描述 在使用BaGet進行包管理時中,上傳symbols產生400報錯: github action中報錯信息 supercisord中報錯信息 二、問題分析 控制臺中輸出的錯誤信息僅限於請求狀態碼400,想要找到詳細的報錯原因,我們需要從https://github.com/loic-sh ...
一、問題描述
在使用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