Google Cloud Build与Bitbucket集成不支持git标签问题咨询
Cloud Build Bitbucket 拉取无Git标签问题解答
该问题为Cloud Build对接第三方代码源时的默认拉取策略导致:默认拉取的是单次提交的浅克隆快照,不会包含
git tag等历史引用信息,因此依赖Git标签的poetry动态版本等工具会识别不到有效版本,生成0.0.0的错误版本号。
关于Google是否会修复该问题
目前Google官方未公开该问题的修复排期,该浅克隆策略是官方为了提升拉取速度设计的默认行为,仅会拉取触发构建的对应提交快照,不会拉取历史提交、分支及标签信息。
可靠解决方法
- 方法一:构建流程中手动拉取全量标签
在cloudbuild.yaml的首个步骤添加Git拉取逻辑,拉取全量标签和提交历史,配置示例如下:
steps: - name: 'gcr.io/cloud-builders/git' entrypoint: 'bash' args: - '-c' - | git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*" git fetch origin --tags git checkout $COMMIT_SHA
执行完该步骤后,构建环境就包含了所有Git标签,poetry等工具可以正常读取标签生成正确的版本号。
- 方法二:直接使用Cloud Build内置变量传入版本
如果是打标签触发构建的场景,可以直接使用Cloud Build提供的内置$TAG_NAME变量直接指定版本,无需读取本地Git标签,配置示例如下:
steps: - name: 'python:3.11-slim' entrypoint: 'bash' args: - '-c' - | pip install poetry poetry version ${TAG_NAME:-0.0.0} poetry build
如果是分支触发的构建场景,也可以结合$SHORT_SHA(提交短哈希)变量拼接生成自定义的动态版本号。
- 方法三:调整CI流程前置打包逻辑
对构建速度要求较高的场景,可以将代码拉取、版本生成、打包步骤放在Bitbucket Pipeline侧完成,再将构建产物同步到GCP执行后续的镜像构建、部署等操作,从根源避免Cloud Build读取不到Git标签的问题。
内容的提问来源于stack exchange,提问作者Michele
相关产品推荐
相关产品推荐

