diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9a464ce..f936826 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,9 +2,10 @@ # It performs CI on every push to main and every pull request, and automatically # builds and attaches a Linux amd64 release binary when a version tag (v*) is pushed. # -# Go is installed manually from a Chinese mirror (NJU) instead of using -# actions/setup-go, because the runner is in a region where the official Go -# download endpoint is slow. GOPROXY is set to goproxy.cn for the same reason. +# Runner: golang-1.25 (Gitea-managed image, alpine + Go 1.25 preinstalled). +# No Go installation step needed. GOPROXY is set explicitly to use the +# China-region mirrors (default alpine GOPROXY is proxy.golang.org, which +# is slow from this runner's network). name: CI / Release on: @@ -18,19 +19,13 @@ on: jobs: ci: name: CI - runs-on: ubuntu-latest + runs-on: golang-1.25 steps: - name: Checkout uses: actions/checkout@v4 - - name: Install Go (Mirror in China) + - name: Set GOPROXY run: | - if [ ! -d "/usr/local/go" ]; then - wget https://mirrors.nju.edu.cn/golang/go1.25.5.linux-amd64.tar.gz - sudo tar -C /usr/local -xzf go1.25.5.linux-amd64.tar.gz - rm go1.25.5.linux-amd64.tar.gz - fi - echo "/usr/local/go/bin" >> $GITHUB_PATH echo "GOPROXY=https://goproxy.cn/,https://goproxy.io,direct" >> $GITHUB_ENV - name: Build @@ -66,19 +61,13 @@ jobs: name: Release needs: ci if: startsWith(github.ref, 'refs/tags/v') - runs-on: ubuntu-latest + runs-on: golang-1.25 steps: - name: Checkout uses: actions/checkout@v4 - - name: Install Go (Mirror in China) + - name: Set GOPROXY run: | - if [ ! -d "/usr/local/go" ]; then - wget https://mirrors.nju.edu.cn/golang/go1.25.5.linux-amd64.tar.gz - sudo tar -C /usr/local -xzf go1.25.5.linux-amd64.tar.gz - rm go1.25.5.linux-amd64.tar.gz - fi - echo "/usr/local/go/bin" >> $GITHUB_PATH echo "GOPROXY=https://goproxy.cn/,https://goproxy.io,direct" >> $GITHUB_ENV - name: Build release binary @@ -95,6 +84,7 @@ jobs: # 2. 调用 Gitea API 创建一个 Release 并获取其 ID # 注意:${{ github.api_url }} 会自动解析为你本地 Gitea 的 API 地址 (如 http://your-gitea/api/v1) + # alpine busybox grep 不支持 -P (PCRE), 改用两次 grep -o 拆 id RELEASE_ID=$(curl -X POST "${{ github.api_url }}/repos/${{ github.repository }}/releases" \ -H "accept: application/json" \ -H "authorization: token ${GITEA_TOKEN}" \ @@ -106,7 +96,7 @@ jobs: \"body\": \"Auto generated release assets.\", \"draft\": false, \"prerelease\": false - }" | grep -oP '"id":\s*\K[0-9]+' | head -n 1) + }" | grep -o '"id":[0-9]*' | head -n 1 | grep -o '[0-9]*') echo "Release 创建成功,ID 为: ${RELEASE_ID}"