如何在Google Cloud Build中获取触发构建的git tag值完成版本校验
根因说明
Cloud Build的预置变量(如$TAG_NAME、$BRANCH_NAME)属于构建级参数,不会默认注入到每个构建步骤的运行时环境变量中,必须手动声明后才能被步骤内运行的代码读取,这就是你代码里拿到None的核心原因。
解决方案
方案1:显式注入TAG_NAME变量
修改你的cloudbuild.yaml的Verify步骤,手动把TAG_NAME预置变量传入步骤的环境变量,同时增加分支/标签触发的判断,避免分支提交触发构建时报错:
- name: 'docker.io/library/python:3.8.6' id: Verify entrypoint: /bin/sh # 手动注入环境变量 env: - 'TAG_NAME=$TAG_NAME' args: - -c - | . /workspace/venv/bin/activate && # 仅当TAG_NAME存在(即标签触发构建)时才执行版本校验 if [ ! -z "$TAG_NAME" ]; then python setup.py verify fi
方案2:直接通过git命令读取当前标签
如果不想依赖Cloud Build的预置变量,也可以直接在步骤内执行git命令获取当前提交对应的标签:
- name: 'docker.io/library/python:3.8.6' id: Verify entrypoint: /bin/sh args: - -c - | . /workspace/venv/bin/activate && export TAG_NAME=$(git describe --tags --abbrev=0) && if [ ! -z "$TAG_NAME" ]; then python setup.py verify fi
额外注意事项
你当前的日志里有setuptools的归一化警告,VERSION里的v前缀会被setuptools自动去除,如果你后续要把制品上传到PyPI仓库,建议统一版本号格式:要么去掉VERSION里的v前缀,要么在校验逻辑里统一处理前缀,避免后续出现版本号不匹配的问题。
内容的提问来源于stack exchange,提问作者Steven
相关产品推荐
相关产品推荐

