From f76e988689f15400b2c99ea313501305aa1acb10 Mon Sep 17 00:00:00 2001 From: MiFaZhan Date: Mon, 2 Nov 2026 14:22:00 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E6=B8=85=E7=90=86=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=81=E6=94=B9=E4=B8=BA=20artifact=20=E5=9B=9E=E6=8A=A5?= =?UTF-8?q?=EF=BC=88Gitea=20=E6=97=A0=E6=97=A5=E5=BF=97=E8=AF=BB=E5=8F=96?= =?UTF-8?q?=20API=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/cleanup-old-gitee-repos.yml | 62 ++++++++++---------- 1 file changed, 30 insertions(+), 32 deletions(-) diff --git a/.gitea/workflows/cleanup-old-gitee-repos.yml b/.gitea/workflows/cleanup-old-gitee-repos.yml index 2b254a0..2fc7674 100644 --- a/.gitea/workflows/cleanup-old-gitee-repos.yml +++ b/.gitea/workflows/cleanup-old-gitee-repos.yml @@ -1,7 +1,7 @@ name: cleanup-old-gitee-repos # 一次性任务:删除 Gitee 企业仓下 12 个已并入单仓的旧仓。 -# 用完后本文件应删除(见 CHANGELOG 记录)。执行前会逐个确认「不是 iotlcm 本身」。 +# 结果写入 report.txt 并作为 artifact 上传(Gitea 日志无读取 API,只能靠 artifact 回报)。 on: workflow_dispatch: @@ -9,52 +9,50 @@ jobs: cleanup: runs-on: host steps: - - name: 删除旧仓 + - name: 删除旧仓并生成报告 env: DST_TOKEN: ${{ secrets.GITEE_TOKEN }} DST_OWNER: ${{ secrets.GITEE_OWNER }} run: | set -u + REPORT="$PWD/report.txt" + : > "$REPORT" + log() { echo "$@" | tee -a "$REPORT"; } 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 + log "=== 1. 删除(DELETE /repos/{owner}/{repo})===" 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 \ + if [ "$r" = "iotlcm" ]; then log "❌ 拒绝删除单仓"; exit 1; fi + code=$(curl -sS -o /tmp/b -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 + log "DELETE ${r} -> $code $(head -c 120 /tmp/b)" done - echo "" - echo "===== 复核:逐个 GET 应返回 404 =====" + log "" + log "=== 2. 复核(期望 404)===" for r in $REPOS; do - code=$(curl -sS -o /dev/null -w '%{http_code}' \ + code=$(curl -sS -o /tmp/b -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; } + log "GET ${r} -> $code" done - echo "" - echo "===== 单仓必须仍在 =====" - code=$(curl -sS -o /dev/null -w '%{http_code}' \ + log "" + log "=== 3. 单仓仍须 200 ===" + code=$(curl -sS -o /tmp/b -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; } + log "GET iotlcm -> $code $(head -c 160 /tmp/b)" - if [ "$fail" != "0" ]; then - echo "" - echo "===== 结论:存在失败项 =====" - exit 1 - fi - echo "" - echo "===== 结论:12 个旧仓已删除,单仓完好 =====" + log "" + log "=== 4. 企业仓列表(前 2000 字符)===" + curl -sS "https://gitee.com/api/v5/enterprises/${DST_OWNER}/repos?access_token=${DST_TOKEN}&per_page=100" \ + | head -c 2000 | tee -a "$REPORT" + log "" + log "=== done ===" + + - name: 上传报告 + if: always() + uses: actions/upload-artifact@v3 + with: + name: cleanup-report + path: report.txt