GitHub Actions中helm push推送至GAR失败报校验和格式错误
故障原因
你在GitHub Actions环境中使用的Helm版本为v3.9.0,该版本的OCI制品推送逻辑存在已知兼容缺陷:和Google Artifact Registry交互时,无法正确解析服务端返回的校验摘要格式,直接触发invalid checksum digest format报错。
本地Mac环境执行正常,是因为本地安装的Helm版本并非存在bug的v3.9.0,要么是更早的稳定版本,要么是已经修复该问题的更高版本。
另外你当前的登录命令附带了完整的仓库路径,不符合Helm OCI登录的地址规范,在有bug的版本中会进一步放大解析异常的概率。
修复方法
按照以下两点调整工作流配置即可解决问题:
- 不要使用工作流环境中默认预装/脚本拉取到的v3.9.0版本Helm,显式安装3.9.1及以上的稳定版本(推荐使用3.10+的正式发布版,OCI相关逻辑更稳定)
- 调整
helm registry login的目标地址,只填写registry根域名,不要携带后续的项目ID、仓库名等路径片段
调整后的步骤配置参考:
- name: Package & Upload Helm Chart run: | # 注意登录地址只保留根域名 ${{ secrets.GH_ACTIONS_SA }} | helm registry login https://${{ env.GKE_ZONE }}-docker.pkg.dev -u _json_key --password-stdin helm version helm package main/charts/website ls -la helm push website-0.1.0.tgz oci://${{ env.GKE_ZONE }}-docker.pkg.dev/${{ env.GC_PROJECT_ID }}/web-${{ env.RBI_ENV }}-django/charts
如果调整后仍有异常,可以在push命令前增加--debug参数打印详细交互日志,确认是否存在权限、仓库路径拼写类的其他问题。
内容的提问来源于stack exchange,提问作者Chad
相关产品推荐
相关产品推荐

