ocy
(wuzhou-ouchangyun)
1
问题背景:
采用2509环境,bmcgo和、conan版本如下
搭建本地conan仓,实际搭建过程中有以下几个疑问。
复现步骤:
1.在vpd组件下执行bmcgo build -bt release --stage stable -r openubmc_wz -u,能够成功上传,对应conan仓也能够看到上传的配方和二进制包。
2.在manifest当中更新版本号进行出包,会有无权限访问仓库报错(ssh密钥访问已经配置完成,测试下载也是可以的),这里面是不是-u这个参数存在问题呢?如果是本地编译完再执行conan upload vpd/1.80.29@wz/stable -r openubmc_wz 此时再编译manifest也会概率出现该问题。
疑问:
1.bmcgo build中-u参数与conan upload是否存在差异
2.产生访问仓库失败的原因会是什么?
3.结合
【组件仓库本地更新流程】openubmc的组件仓库中,有些组件版本疑似没有二进制包 - #6,来自 yizhonghui 这里的回复由于编译条件不同会导致直接在组件下编译的relase包并不能直接提供给manifest中使用,manifest会重新根据自己的配置重新编译,那么是不是除了推送组件执行upload后,还需要在推送一次manifest构建产出的组件包?这样才是真正的能够用远端的二进制?
这题我会
1、我理解是bmcgo会调用conan upload,但conan upload可以使用更灵活的参数,比如 –froce 强制推送。也就是如果远端已有对应conan包,bmcgo不会覆盖。
2、我看截图是访问源码仓出现权限问题:
错误分析
错误核心分析
-
错误源头: ConanException表明这是 Conan 工具抛出的异常。
-
具体失败的命令: git fetch --depth 1 origin ...这是 Git 命令,用于从远程仓库(origin)获取特定的一次提交(38ef831…)。
-
错误代码: 128是 Git 命令的通用失败错误码。
-
关键错误信息:
简单来说:Conan 想要从一个需要登录的 Git 仓库下载东西,但它提供的用户名/密码(或令牌)是错误的、过期的,或者根本没有提供,导致服务器拒绝了访问。
原因分析
凭据问题(最常见)
- 原因: 您的计算机上存储的用于访问该远程仓库(可能是私有的)的密码或令牌已经过期,或者最初就没有正确设置。
仓库权限问题
- 原因: 您当前的账户没有权限访问这个特定的 Git 仓库或 Conan 包。
另外:不建议使用ssh密钥,建议使用http/https协议拉代码,用.git-credentials文件配置鉴权
git config credential.helper store
3、不需要推送manifest构建的组件包,因为找不到二进制触发拉源码构建本身是正常的构建行为。只要远端有conan包,bmcgo就可以根据实际需要自主配置参数拉源码构建。但是为了能节约总构建时间,可以考虑推送stable/rc通道的debug/release包,这四个用的最多的二进制。也就是以空间换时间。
3 个赞
ocy
(wuzhou-ouchangyun)
3
感谢大佬指导,大致明白整个过程了。
目前我们的源码是放在自己的私仓当中,通过http/https获取源码,进行构建会出现以下报错,请问有遇到过吗?但是通过ssh不会出现,感觉是我们自己基础建设中git仓自己的问题
Larry_Li
(LiJiang)
4
这个报错因为本地没有git remote 仓库, 执行git remote -v查看。
定位方法: LOG=debug bingo xxx命令 执行命令,打开debug日志。
1 个赞
ocy
(wuzhou-ouchangyun)
5
本地是有remote的,定位到的报错如下
看了一下bingo的源码,问题原因应该是我们私有仓用的是http而不是https,bingo未对http进行适配,走到了去掉url协议进行转换,才出现的报错
增加如下修改,即可不会产生该问题
我是直接用sed命令将这个.py文件的 http_proto = ‘https://‘ 替换成 http_proto = ‘http://‘,因为只要更新bingo/bmcgo,还会替换回来的。
用sed便于流水线集成 
ocy
(wuzhou-ouchangyun)
7
不过我还有一个疑问,CICD中如果全部都用http+令牌的形式岂不是全部用到的仓都需要单独配置吗?ssh的话,只需要配置一下全局就好了
用.git-credentials文件配置鉴权:
git config credential.helper store
你了解一下这个东西
2 个赞