请教一下关于上传至conan仓的组件包

问题背景:
采用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、我看截图是访问源码仓出现权限问题:

错误分析

错误核心分析

  1. 错误源头ConanException表明这是 Conan 工具抛出的异常。

  2. 具体失败的命令git fetch --depth 1 origin ...这是 Git 命令,用于从远程仓库(origin)获取特定的一次提交(38ef831…)。

  3. 错误代码128是 Git 命令的通用失败错误码。

  4. 关键错误信息

    • remote: HTTP Basic: Access denied: 远程仓库服务器返回“访问被拒绝”。

    • fatal: Authentication failed for ...: Git 客户端报告“身份验证失败”。

简单来说:Conan 想要从一个需要登录的 Git 仓库下载东西,但它提供的用户名/密码(或令牌)是错误的、过期的,或者根本没有提供,导致服务器拒绝了访问。

原因分析

凭据问题(最常见)

  • 原因: 您的计算机上存储的用于访问该远程仓库(可能是私有的)的密码或令牌已经过期,或者最初就没有正确设置。

仓库权限问题

  • 原因: 您当前的账户没有权限访问这个特定的 Git 仓库或 Conan 包。

另外:不建议使用ssh密钥,建议使用http/https协议拉代码,用.git-credentials文件配置鉴权

git config credential.helper store

3、不需要推送manifest构建的组件包,因为找不到二进制触发拉源码构建本身是正常的构建行为。只要远端有conan包,bmcgo就可以根据实际需要自主配置参数拉源码构建。但是为了能节约总构建时间,可以考虑推送stable/rc通道的debug/release包,这四个用的最多的二进制。也就是以空间换时间。

3 个赞

感谢大佬指导,大致明白整个过程了。
目前我们的源码是放在自己的私仓当中,通过http/https获取源码,进行构建会出现以下报错,请问有遇到过吗?但是通过ssh不会出现,感觉是我们自己基础建设中git仓自己的问题

这个报错因为本地没有git remote 仓库, 执行git remote -v查看。

定位方法: LOG=debug bingo xxx命令 执行命令,打开debug日志。

1 个赞

本地是有remote的,定位到的报错如下


看了一下bingo的源码,问题原因应该是我们私有仓用的是http而不是https,bingo未对http进行适配,走到了去掉url协议进行转换,才出现的报错

增加如下修改,即可不会产生该问题

我是直接用sed命令将这个.py文件的 http_proto = ‘https://‘ 替换成 http_proto = ‘http://‘,因为只要更新bingo/bmcgo,还会替换回来的。

用sed便于流水线集成 :+1:

不过我还有一个疑问,CICD中如果全部都用http+令牌的形式岂不是全部用到的仓都需要单独配置吗?ssh的话,只需要配置一下全局就好了

用.git-credentials文件配置鉴权:

git config credential.helper store

你了解一下这个东西

2 个赞

明白了,这个也是配置一次即可