Github Action误将成功的gcloud build判定为失败,求助排查
问题解决思路
这种问题大概率是gcloud CLI在流式传输构建日志时出现了网络或输出缓冲异常——虽然Google Cloud Build本身跑成了,但命令因为日志传输环节的错误返回了非0退出码,导致Github Actions判定步骤失败。可以试试下面几个方案:
禁用日志流式传输:在
gcloud builds submit命令里添加--no-stream参数,让命令不再实时流式传输日志,而是等构建完成后再同步结果,避免流式过程中的异常干扰退出码判断。修改后的命令如下:gcloud builds submit --pack image=${{ vars.SERVER_IMAGE }} --no-stream更新gcloud CLI版本:旧版本的gcloud可能存在流式日志的bug,在执行构建步骤前先更新到最新稳定版:
gcloud components update --quiet延长构建超时时间:如果你的构建耗时较长,默认的日志流式超时可能触发错误,可以通过
--timeout参数延长超时限制,比如设置为1小时:gcloud builds submit --pack image=${{ vars.SERVER_IMAGE }} --timeout=3600s手动验证镜像存在性:如果上面的方法都不行,可以捕获gcloud命令的退出码,然后手动检查镜像是否成功创建,以此来决定步骤是否成功:
# 执行构建命令,捕获退出码 gcloud builds submit --pack image=${{ vars.SERVER_IMAGE }} || exit_code=$? # 如果命令返回非0,检查镜像是否存在 if [ -n "$exit_code" ]; then gcloud container images describe ${{ vars.SERVER_IMAGE }} || exit $exit_code fi
内容的提问来源于stack exchange,提问作者David Anderson
相关产品推荐
相关产品推荐

