diff --git a/.gitea/workflows/mirror-to-gitee.yml b/.gitea/workflows/mirror-to-gitee.yml index 51304d7..eef2085 100644 --- a/.gitea/workflows/mirror-to-gitee.yml +++ b/.gitea/workflows/mirror-to-gitee.yml @@ -97,18 +97,22 @@ jobs: fi echo "✅ 校验通过:Gitee 端 main 与 tag 均已对齐" - # 门户是公开项目门户,目标仓必须是公开的,否则不会出现在企业仓列表页里。 - # 仓库可见性的更新端点是 PATCH /api/v5/repos/{owner}/{repo}; - # /enterprises/{owner}/repos/{repo} 不是有效端点(会 404)。 - # 该端点要求带 name,否则返回 400 {"messages":["name is missing"]}。 - # 企业仓可见性有三档(公开 / 企业内 / 私有),公开需要 private 与 internal 都为 false。 - echo "----- 校正目标仓可见性为公开" - curl -sS -X PATCH \ + # 目标仓可见性:企业仓建仓 API 忽略 public/private 字段, + # 新建的仓一律是私有的;改可见性需要企业仓管理员权限, + # 本令牌(普通成员令牌)会被拒(401「修改仓库公开属性失败,您没有此项权限」)。 + # 因此这里只做「尽力而为 + 明确提示」,失败不算 job 失败。 + echo "----- 尝试把目标仓可见性校正为公开" + HTTP=$(curl -sS -m 25 -X PATCH \ "https://gitee.com/api/v5/repos/${DST_OWNER}/${REPO_NAME}?access_token=${DST_TOKEN}" \ -H 'Content-Type: application/json' \ -d "{\"name\":\"${REPO_NAME}\",\"private\":false,\"internal\":false,\"description\":\"雪羊科技开源项目门户:iotLCM / 秀杰 DTU / XiuAdmin 等开源项目索引\"}" \ - -o /tmp/repo-patch.json -w '改可见性 HTTP %{http_code}\n' || true + -o /tmp/repo-patch.json -w '%{http_code}' || echo 000) + echo "改可见性 HTTP ${HTTP}" head -c 300 /tmp/repo-patch.json 2>/dev/null; echo + case "$HTTP" in + 2*) echo "✅ 目标仓已为公开" ;; + *) echo "ℹ️ 目标仓当前为私有。需要用企业仓管理员账号在 Gitee 后台把 ${DST_OWNER}/${REPO_NAME} 改为「公开」;代码已同步,不影响镜像内容。" ;; + esac exit 0 fi wait_s=$((attempt * 30)) diff --git a/.gitea/workflows/probe-visibility.yml b/.gitea/workflows/probe-visibility.yml deleted file mode 100644 index 6cbbd54..0000000 --- a/.gitea/workflows/probe-visibility.yml +++ /dev/null @@ -1,45 +0,0 @@ -name: probe-visibility - -# 一次性排查(带清理): -# 1) 企业仓建仓时用 public:true 是否直接得到公开仓 -# 2) 该令牌能否删仓(能删,才谈得上「删掉私有仓再按公开重建」) -# 探针仓名合法(须字母开头),结束前删掉。 -on: - workflow_dispatch: - -jobs: - probe: - runs-on: host - steps: - - name: 试建仓可见性字段与删仓权限 - env: - DST_TOKEN: ${{ secrets.GITEE_TOKEN }} - DST_OWNER: ${{ secrets.GITEE_OWNER }} - run: | - set -u - - echo "=== 1. 建仓 public:true ===" - curl -sS -m 25 -X POST \ - "https://gitee.com/api/v5/enterprises/${DST_OWNER}/repos?access_token=${DST_TOKEN}" \ - -H 'Content-Type: application/json' \ - -d '{"name":"probevistmp","auto_init":false,"public":true}' \ - -o /tmp/c.json -w '建仓 HTTP %{http_code}\n' || true - head -c 400 /tmp/c.json; echo - curl -s -o /dev/null -w "匿名 probevistmp: HTTP %{http_code}\n" -m 20 "https://gitee.com/${DST_OWNER}/probevistmp" - - echo "=== 2. 建仓 visibility:public ===" - curl -sS -m 25 -X POST \ - "https://gitee.com/api/v5/enterprises/${DST_OWNER}/repos?access_token=${DST_TOKEN}" \ - -H 'Content-Type: application/json' \ - -d '{"name":"probevisvis","auto_init":false,"visibility":"public"}' \ - -o /tmp/c2.json -w '建仓 HTTP %{http_code}\n' || true - head -c 400 /tmp/c2.json; echo - curl -s -o /dev/null -w "匿名 probevisvis: HTTP %{http_code}\n" -m 20 "https://gitee.com/${DST_OWNER}/probevisvis" - - echo "=== 3. 删探针仓 ===" - for n in probevistmp probevisvis; do - curl -sS -m 25 -X DELETE \ - "https://gitee.com/api/v5/repos/${DST_OWNER}/${n}?access_token=${DST_TOKEN}" \ - -o /tmp/d.json -w "删 ${n} HTTP %{http_code}\n" || true - head -c 150 /tmp/d.json 2>/dev/null; echo - done