BaGet进行包管理时symbols上传报错问题的分析及解决

打印 上一主题 下一主题

主题 885|帖子 885|积分 2655

一、问题描述

在使用BaGet进行包管理时中,上传symbols产生400报错:
github action中报错信息

supercisord中报错信息

二、问题分析

控制台中输出的错误信息仅限于请求状态码400,想要找到详细的报错原因,我们需要从https://github.com/loic-sharma/BaGet/ 下载源代码,找到对应symbols上传方法:
  1. BaGet.Web
  2. -> SymbolController
  3. -> async Task Upload(CancellationToken cancellationToken)
复制代码

本地进行代码调试时,并不会出现此错误,可以判断为服务器环境差异导致,在相关的方法中增加跟踪代码:

编译上传服务器后在
  1. BaGet.Core
  2. -> SymbolIndexingService
  3. -> async Task<IReadOnlyList<string>> GetSymbolPackagePdbPathsOrNullAsync(PackageArchiveReader symbolPackage,CancellationToken cancellationToken)
复制代码
方法中捕获异常:
Required environment variable 'HOME' is not set.

三、解决方法

通过在项目运行Supervisord中修改environment参数来进行修复:
  1. environment=ASPNETCORE__ENVIRONMENT=Production,DOTNET_CLI_HOME=/temp
复制代码
增加完DOTNET_CLI_HOME后运行正常。
注意:如果项目运行是在supervisord下进行管理的
  1. [program:local.nuget.keeplive]
  2. command=dotnet BaGet.dll
  3. directory=/srv/website/dotnet/nuget
  4. environment=ASPNETCORE__ENVIRONMENT=Production,DOTNET_CLI_HOME=/temp
  5. user=root
  6. stopsignal=INT
  7. autostart=false
  8. autorestart=true
  9. startsecs=3
  10. stderr_logfile=/var/log/local.nuget.keeplive.err.log
  11. stdout_logfile=/var/log/local.nuget.keeplive.out.log
复制代码
修改配置后记得运行 supervisorctl update 后重启应用
关联issue:https://github.com/loic-sharma/BaGet/issues/726

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

盛世宏图

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表