如何让Google Cloud Build不等待CDN缓存失效完成再结束构建
Cloud Build内置实现CDN缓存失效步骤异步执行的方案
你可以直接利用Cloud Build的**background步骤参数**来实现需求,完全不需要额外依赖Pub/Sub或Cloud Function,零额外成本,还能保证步骤按顺序触发但不阻塞构建流程。
具体配置方法
在你的cloudbuild.yaml中,把最后一步CDN缓存失效的步骤加上background: true标记即可。示例如下:
steps: # 你的前置步骤:npm脚本执行、GCS同步等 - name: 'node:18' args: ['npm', 'run', 'build'] - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' args: ['gsutil', '-m', 'rsync', '-r', './dist', 'gs://your-bucket-name'] # 异步执行的CDN缓存失效步骤 - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' args: [ 'gcloud', 'compute', 'url-maps', 'invalidate-cdn-cache', 'your-url-map-name', '--paths', '/file1.js', '/file2.css', # 替换为你的10个文件路径 '--project', 'your-project-id' ] background: true
效果说明
- 所有前置步骤会按顺序正常执行,只有当前置步骤全部完成后,才会启动这个后台的缓存失效步骤
- Cloud Build不会等待这个后台步骤执行完成,前置步骤结束后直接标记构建成功并结束流程
- 缓存失效操作会在后台持续执行,你可以在Cloud Build的构建详情日志中查看该步骤的执行状态和输出
注意事项
- 确保缓存失效的命令是幂等的,避免重复执行带来的问题
- 后台步骤的日志不会影响构建的成功状态,即使缓存失效过程中出现错误,已结束的构建也不会被标记失败(如果需要监控该步骤的失败状态,可以结合Cloud Build的日志导出功能做告警)
内容的提问来源于stack exchange,提问作者Matt Fletcher
相关产品推荐
相关产品推荐

