侧边栏壁纸
博主头像
x-Blog🍃

🌱 I’m currently learning ...

  • 累计撰写 6 篇文章
  • 累计创建 6 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

批量删除 CloudFlare pages 部署

ItxGo
2025-06-16 / 0 评论 / 0 点赞 / 4 阅读 / 0 字

众所周知,CloudFlare pages 官方有个 bug,如果部署数量超过 100 个,将不能通过网页管理面板删除项目,必须手动一个一个删除部署,将部署数量删除到 100 个以内,才能删除项目。好在官方提供了 api 可以批量删除,本文利用 CF 官方 api 批量删除部署,且可自定义保留最新部署的数量。

资源

仓库地址

yutian81/cf-github-script · GitHub,支持作者,点个免费的 star 吧!

代码全文

#!/bin/bash

# 配置变量(请根据需要修改)
API_TOKEN=""       # 需要 Pages 和 Workers 的编辑权限
ACCOUNT_ID=""      # 你的 Cloudflare 账户 ID
PROJECT_NAME=""    # 项目名

# 默认保留最新部署数量(可通过脚本参数覆盖)
KEEP=3

# 如果传入了参数则覆盖默认保留数量
if [[ -n "$1" ]]; then
  KEEP=$1
fi

# 检查必要变量是否已设置
if [[ -z "$API_TOKEN" || -z "$ACCOUNT_ID" || -z "$PROJECT_NAME" ]]; then
  echo "❌ 错误:请先设置 API_TOKEN, ACCOUNT_ID 和 PROJECT_NAME"
  exit 1
fi

# 存储所有部署 ID 的数组
all_deployments=()

# 页码初始值
page=1
per_page=20

echo "⏳ 正在获取所有部署记录..."

# 遍历所有页面
while true; do
  response=$(curl -s -H "Authorization: Bearer $API_TOKEN" \
    "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME/deployments?page=$page&per_page=$per_page")

  deployments=$(echo "$response" | jq '.result')
  count=$(echo "$deployments" | jq 'length')

  if [ "$count" -eq 0 ]; then
    break
  fi

  ids=$(echo "$deployments" | jq -r '.[].id')
  all_deployments+=($ids)

  ((page++))
done

total=${#all_deployments[@]}
echo "📦 共获取到 $total 个部署。"

# 排序并获取要保留的最新 N 个
keep_ids=$(printf "%s\n" "${all_deployments[@]}" | tac | head -n "$KEEP")
delete_ids=$(printf "%s\n" "${all_deployments[@]}" | grep -vxFf <(echo "$keep_ids"))

if [[ -z "$delete_ids" ]]; then
  echo "✅ 无需删除部署,已满足保留数量 $KEEP。"
  exit 0
fi

echo "🚮 将删除以下部署(保留最近 $KEEP 个):"
echo "$delete_ids"

# 删除旧部署
for id in $delete_ids; do
  echo "🗑️ 正在删除部署 ID: $id"
  curl -s -X DELETE -H "Authorization: Bearer $API_TOKEN" \
    "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME/deployments/$id" | jq
done

echo "✅ 所有旧部署已删除完成。"

使用方法

此处只说 windows 环境,linux 也是同样道理

安装工具

  • 安装 windows 版 git bash 和 jq。方法略过,自行安装,并配置好 windows 系统环境变量

执行代码

  • 将上面的代码保存为 del-pages.sh 文件,在脚本文件同级目录点击鼠标右键,打开 git bash 终端

  • 运行 bash del-pages.sh,将默认保留最新的 3 个部署,删除其他旧部署

  • 运行 bash del-pages.sh 5,将默认保留最新的 5 个部署,删除其他旧部署,数字可自行修改

0

评论区