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

求助:CircleCI构建取消后执行任务/步骤的可行替代方案

解决方案:CircleCI构建取消后清理GCP临时资源

针对你遇到的构建取消导致GCP资源残留的问题,分享几个经过验证的实用方案:

方案1:给GCP资源添加自动过期机制

这是最省心的方案,直接在创建GCP计算实例及配套资源时配置自动销毁规则:

  • 创建实例时,通过gcloud命令设置--delete-on-termination(确保实例关机时自动删除),同时给实例添加定时销毁的启动脚本:
    gcloud compute instances create temp-instance \
      --zone us-central1-a \
      --delete-on-termination \
      --metadata shutdown-script="#!/bin/bash
        # 设置2小时后自动销毁实例
        sleep 7200
        gcloud compute instances delete temp-instance --zone us-central1-a --quiet"
    
  • 也可以用GCP Cloud Scheduler配合Cloud Functions,定时扫描带有circleci-build-id=$CIRCLE_BUILD_ID标签的资源,查询对应CircleCI构建状态,若构建已取消/终止则自动删除关联资源。

方案2:独立的清理工作流

在CircleCI配置中新增专门的清理任务,支持手动或定时触发:

  • 编写接收构建ID参数的清理任务,定位并删除该构建关联的所有GCP资源:
    jobs:
      cleanup-gcp-resources:
        docker:
          - image: google/cloud-sdk:latest
        parameters:
          build-id:
            type: string
        steps:
          - run:
              name: Clean up GCP resources for canceled build
              command: |
                # 删除关联实例
                gcloud compute instances delete --zone us-central1-a "ci-instance-<< parameters.build-id >>" --quiet
                # 删除关联VPC和防火墙
                gcloud compute networks delete "ci-vpc-<< parameters.build-id >>" --quiet
                gcloud compute firewall-rules delete "ci-firewall-<< parameters.build-id >>" --quiet
    
  • 可以通过CircleCI UI手动触发该任务并传入被取消构建的ID;也用Cloud Scheduler定时调用CircleCI API,批量清理超时未处理的残留资源。

方案3:任务内信号捕获(单任务场景适用)

如果资源在单个任务内创建,且担心任务中途被取消,可在脚本中用trap捕获CircleCI发送的SIGTERM信号,执行即时清理:

#!/bin/bash

# 定义清理逻辑
cleanup_resources() {
  echo "Build canceled, cleaning up GCP resources..."
  gcloud compute instances delete temp-instance --zone us-central1-a --quiet
  exit 0
}

# 绑定SIGTERM信号触发清理
trap cleanup_resources SIGTERM

# 创建GCP资源的核心逻辑
gcloud compute instances create temp-instance --zone us-central1-a

# 执行任务后续操作
# ...

注意:该方案仅适用于单个任务未完成时被取消的场景,若创建资源的任务已完成、后续销毁任务未运行时构建被取消,此方法无效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 07:52:28