diff --git a/.gitea/workflows/code-review.yml b/.gitea/workflows/code-review.yml index fcafb6275..07daa8bd5 100644 --- a/.gitea/workflows/code-review.yml +++ b/.gitea/workflows/code-review.yml @@ -20,56 +20,11 @@ jobs: if: ${{ !gitea.event.pull_request.draft }} steps: + # actions/checkout 由 runner 在宿主机层面处理,不受容器网络影响 - name: Checkout code - shell: sh - env: - GITHUB_TOKEN: ${{ github.token }} - GITEA_SERVER_URL: ${{ gitea.server_url }} - run: | - set -eu - python3 - <<'PY' - import io, os, tarfile, time, urllib.request, urllib.error - # 用 gitea.server_url(公网地址)替代 GITHUB_API_URL(容器内可能不可达) - server_url = os.environ.get('GITEA_SERVER_URL', '').rstrip('/') - repo = os.environ['GITHUB_REPOSITORY'] - sha = os.environ['GITHUB_SHA'] - url = f"{server_url}/api/v1/repos/{repo}/archive/{sha}.tar.gz" - request = urllib.request.Request(url, headers={"Authorization": f"token {os.environ['GITHUB_TOKEN']}"}) - last_err = None - for attempt in range(5): - try: - with urllib.request.urlopen(request, timeout=120) as response: - archive = response.read() - break - except urllib.error.HTTPError as e: - last_err = e - if e.code >= 500 and attempt < 4: - wait = 2 ** attempt - print(f"Checkout HTTP {e.code}, retrying in {wait}s (attempt {attempt+1}/5)...") - time.sleep(wait) - continue - raise - except Exception as e: - last_err = e - if attempt < 4: - wait = 2 ** attempt - print(f"Checkout error: {e}, retrying in {wait}s (attempt {attempt+1}/5)...") - time.sleep(wait) - continue - raise - else: - raise last_err - with tarfile.open(fileobj=io.BytesIO(archive), mode='r:gz') as tar: - root_prefix = tar.getmembers()[0].name.split('/', 1)[0] + '/' - for member in tar.getmembers(): - name = member.name - if name == root_prefix[:-1]: - continue - if name.startswith(root_prefix): - member.name = name[len(root_prefix):] - if member.name: - tar.extract(member, '.') - PY + uses: actions/checkout@v3 + with: + fetch-depth: 0 - name: Install dependencies run: |