You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins部署GCP Cloud Function失败:无法获取源代码

Jenkins流水线部署GCP Cloud Function报错:Failed to retrieve function source code

针对你遇到的ERROR: (gcloud.functions.deploy) OperationError: code=3, message=Failed to retrieve function source code错误,结合你已完成的排查,给出以下针对性验证与修复步骤:

  • 验证Jenkins代理与GCP存储桶的网络连通性
    你怀疑VPC防火墙阻断通信的可能性很高,可在Jenkins代理节点上执行以下命令测试:

    curl -I gs://<你的存储桶完整路径>/<代码包文件名>.zip
    

    若返回超时或403错误,说明网络通路存在问题,可通过以下方式解决:

    • 配置Jenkins代理所在VPC与GCP项目VPC建立VPC对等连接,打通内网访问通道;
    • 给Jenkins代理配置Cloud NAT,使其通过公网合法访问GCP存储服务;
    • 临时给存储桶设置公共读取权限(仅限测试,生产环境禁用),快速验证是否为网络问题。
  • 确认Jenkins打包的工作目录与包内容
    虽然打包命令本身无误,但Jenkins流水线的工作目录可能与本地/Cloud Shell不同,导致压缩包层级错误。调整流水线中的打包步骤:

    # 切换到函数代码所在目录
    cd ./<函数目录名>
    # 打包到上级目录,确保包内直接包含入口文件和requirements.txt
    zip -r ../function-code.zip .
    # 验证压缩包内容
    unzip -l ../function-code.zip
    

    确保压缩包根目录下存在你的Python入口文件(如main.py)和requirements.txt,没有多余的嵌套目录。

  • 检查gcloud部署命令的参数细节
    确认部署命令中的--source参数指向压缩包的完整GCS路径,而非存储桶目录,例如:

    gcloud functions deploy <函数名> --runtime python311 --trigger-http --source gs://<存储桶名>/function-code.zip
    

    同时在流水线中显式设置GCP项目ID,避免环境变量不一致:

    gcloud config set project <你的GCP项目ID>
    
  • 复核服务账号的存储桶权限
    确保Jenkins使用的服务账号拥有storage.objects.get权限(读取存储桶文件的核心权限),可直接为其添加Storage Object Viewer预定义角色,或配置更细粒度的IAM权限。

内容的提问来源于stack exchange,提问作者AndrewJaeyoung

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 21:36:14