#!/bin/bash # 配置信息 GITEA_URL="https://gitea.tailnet-68f9.ts.net" OWNER="ben" REPO="modelscope" TOKEN="8d7d70f324796be650b79415303c31f567bf459b" # 函数:获取所有工作流运行记录 function get_workflow_runs() { curl -s -H "Authorization: token $TOKEN" \ "$GITEA_URL/api/v1/repos/$OWNER/$REPO/actions/runs?per_page=50" } # 函数:删除单个工作流运行记录 function delete_workflow_run() { local run_id=$1 response=$(curl -s -X DELETE -H "Authorization: token $TOKEN" \ "$GITEA_URL/api/v1/repos/$OWNER/$REPO/actions/runs/$run_id") echo "删除工作流 #$run_id: $response" } # 主脚本 echo "=== 工作流运行记录清理工具 ===" echo "" # 获取当前工作流运行记录 echo "1. 获取当前工作流运行记录..." response=$(get_workflow_runs) # 提取所有运行记录的 ID run_ids=$(echo $response | grep -o '"id":[0-9]*' | grep -o '[0-9]*' | head -10) # 检查是否有运行记录 if [ -z "$run_ids" ]; then echo "没有找到工作流运行记录" exit 0 fi # 显示当前运行记录 ID echo "" echo "2. 当前工作流运行记录 ID:" echo "----------------------------------------" echo "$run_ids" echo "----------------------------------------" # 统计要删除的记录数 count=$(echo "$run_ids" | wc -w) echo "" echo "3. 找到 $count 条工作流运行记录,准备删除..." echo "----------------------------------------" # 批量删除每个运行记录 deleted=0 for run_id in $run_ids; do delete_workflow_run $run_id deleted=$((deleted + 1)) # 添加短暂延迟,避免 API 速率限制 sleep 1 done echo "" echo "4. 删除完成!" echo "----------------------------------------" echo "共处理了 $deleted 条工作流运行记录" echo "" # 再次检查是否还有剩余记录 echo "5. 检查是否还有剩余记录..." final_response=$(get_workflow_runs) final_count=$(echo $final_response | grep -o '"total_count":[0-9]*' | grep -o '[0-9]*') echo "当前剩余工作流运行记录数:$final_count" if [ "$final_count" -gt 0 ]; then echo "注意:仍有 $final_count 条记录未删除,可能是因为它们正在运行中或有权限问题。" echo "请稍后再试,或通过 Gitea 网页界面手动删除。" else echo "所有工作流运行记录已成功删除!" fi