name: cleanup-old-gitee-repos # 一次性任务:删除 Gitee 企业仓下 12 个已并入单仓的旧仓。 # 用完后本文件应删除(见 CHANGELOG 记录)。执行前会逐个确认「不是 iotlcm 本身」。 on: workflow_dispatch: jobs: cleanup: runs-on: host steps: - name: 删除旧仓 env: DST_TOKEN: ${{ secrets.GITEE_TOKEN }} DST_OWNER: ${{ secrets.GITEE_OWNER }} run: | set -u REPOS="iotlcm-admin-svr iotlcm-admin-ui iotlcm-app iotlcm-bot iotlcm-deploy iotlcm-docs iotlcm-onelink-mock iotlcm-openapi iotlcm-sms iotlcm-upstream-chan iotlcm-upstream-proxy iotlcm-worker-svr" fail=0 for r in $REPOS; do # 保险:绝不删单仓本身 if [ "$r" = "iotlcm" ]; then echo "❌ 拒绝删除单仓 $r"; exit 1 fi code=$(curl -sS -o /tmp/del.out -w '%{http_code}' -X DELETE \ "https://gitee.com/api/v5/repos/${DST_OWNER}/${r}?access_token=${DST_TOKEN}") echo "DELETE ${DST_OWNER}/${r} -> HTTP $code" case "$code" in 200|202|204) ;; 404) echo " (已不存在,跳过)" ;; *) echo " ❌ 失败:$(head -c 200 /tmp/del.out)"; fail=1 ;; esac done echo "" echo "===== 复核:逐个 GET 应返回 404 =====" for r in $REPOS; do code=$(curl -sS -o /dev/null -w '%{http_code}' \ "https://gitee.com/api/v5/repos/${DST_OWNER}/${r}?access_token=${DST_TOKEN}") echo "GET ${DST_OWNER}/${r} -> HTTP $code" [ "$code" != "404" ] && { echo " ⚠️ 仍然存在"; fail=1; } done echo "" echo "===== 单仓必须仍在 =====" code=$(curl -sS -o /dev/null -w '%{http_code}' \ "https://gitee.com/api/v5/repos/${DST_OWNER}/iotlcm?access_token=${DST_TOKEN}") echo "GET ${DST_OWNER}/iotlcm -> HTTP $code" [ "$code" != "200" ] && { echo " ❌ 单仓不见了"; fail=1; } if [ "$fail" != "0" ]; then echo "" echo "===== 结论:存在失败项 =====" exit 1 fi echo "" echo "===== 结论:12 个旧仓已删除,单仓完好 ====="