一次性删除所有的GitHub Action记录

一键命令

liunx命令

# 定义 GitHub Token 和仓库信息变量
GITHUB_TOKEN="xxxx"
OWNER="xxxx"             # GitHub 用户名
REPO="xxxx"     # GitHub 仓库名

# 循环直到所有页面都处理完
while true; do
    # 请求当前页面的工作流记录
    RESPONSE=$(curl -H "Authorization: token $GITHUB_TOKEN" \
                     "https://api.github.com/repos/$OWNER/$REPO/actions/runs?status=completed")
    
    # 提取工作流 ID 并删除
    WORKFLOW_IDS=$(echo "$RESPONSE" | jq -r '.workflow_runs[].id')
    
    # 如果没有获取到 ID,退出循环
    if [ -z "$WORKFLOW_IDS" ]; then
        echo "没有更多的工作流记录,退出."
        break
    fi
    
    # 打印删除的 ID
    echo "正在删除以下工作流 ID: $WORKFLOW_IDS"
    
    # 批量删除工作流记录
    echo "$WORKFLOW_IDS" | xargs -I {} \
        curl -X DELETE -H "Authorization: token $GITHUB_TOKEN" \
        "https://api.github.com/repos/$OWNER/$REPO/actions/runs/{}"
done

可能会缺少jq

sudo apt update
sudo apt install jq

win命令

# 定义 GitHub Token 和仓库信息变量
$GITHUB_TOKEN = "xxxx"  # 你的 GitHub Token
$OWNER = "xxxx"         # GitHub 用户名
$REPO = "xxxx"          # GitHub 仓库名


# 循环直到所有页面都处理完
while ($true) {
    # 请求当前页面的工作流记录
    $url = "https://api.github.com/repos/$OWNER/$REPO/actions/runs?status=completed"
    $response = Invoke-RestMethod -Uri $url -Headers @{Authorization="token $GITHUB_TOKEN"}

    # 提取工作流 ID
    $workflow_ids = $response.workflow_runs | Select-Object -ExpandProperty id

    # 如果没有获取到 ID,退出循环
    if ($workflow_ids.Count -eq 0) {
        Write-Host "没有更多的工作流记录,退出."
        break
    }

    # 打印删除的 ID
    Write-Host "正在删除以下工作流 ID: $($workflow_ids -join ', ')"

    # 批量删除工作流记录
    foreach ($id in $workflow_ids) {
        $delete_url = "https://api.github.com/repos/$OWNER/$REPO/actions/runs/$id"
        Invoke-RestMethod -Uri $delete_url -Method Delete -Headers @{Authorization="token $GITHUB_TOKEN"}
        Write-Host "已删除工作流 ID: $id"
    }
}

posted @ 2025-11-05 23:28  上掌  阅读(18)  评论(0)    收藏  举报