diff --git a/.gitea/workflows/update-rules.yml b/.gitea/workflows/update-rules.yml index c86b9d1..15fc313 100644 --- a/.gitea/workflows/update-rules.yml +++ b/.gitea/workflows/update-rules.yml @@ -14,15 +14,20 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: - token: ${{ secrets.WORKFLOW_TOKEN }} + # 对于 Gitea,可能需要使用不同的 token 配置 + token: ${{ secrets.GITEA_TOKEN || github.token }} + fetch-depth: 0 # 获取完整历史,有助于避免一些同步问题 - name: Set environment variables run: | echo "RELEASE_NAME=Clash Rules $(date +%Y%m%d-%H%M)" >> $GITHUB_ENV echo "TAG_NAME=$(date +%Y%m%d%H%M)" >> $GITHUB_ENV echo "UPDATE_TIME=$(date '+%Y-%m-%d %H:%M:%S UTC')" >> $GITHUB_ENV + # 设置 Gitea 相关环境变量 + echo "GITEA_SERVER_URL=${GITHUB_SERVER_URL:-$GITEA_SERVER_URL}" >> $GITHUB_ENV + echo "GITEA_REPOSITORY=${GITHUB_REPOSITORY:-$GITEA_REPOSITORY}" >> $GITHUB_ENV - name: Create rules directory run: | @@ -311,7 +316,7 @@ jobs: git checkout -B release git push -f origin release - - name: Create release + - name: Create release (Gitea API) if: steps.check_changes.outputs.changes == 'true' run: | # 生成更新日志 @@ -340,19 +345,30 @@ jobs: echo "### ⏰ 更新时间" >> release_notes.md echo "${{ env.UPDATE_TIME }}" >> release_notes.md + # 准备 API 请求数据 + RELEASE_BODY=$(cat release_notes.md | jq -sR .) + # 使用 Gitea API 创建 Release - curl -X POST \ - -H "Authorization: token ${{ secrets.WORKFLOW_TOKEN }}" \ + RESPONSE=$(curl -s -w "%{http_code}" -X POST \ + -H "Authorization: token ${{ secrets.GITEA_TOKEN || secrets.WORKFLOW_TOKEN }}" \ -H "Content-Type: application/json" \ - -d '{ - "tag_name": "${{ env.TAG_NAME }}", - "target_commitish": "release", - "name": "${{ env.RELEASE_NAME }}", - "body": "'"$(cat release_notes.md | sed 's/"/\\"/g' | tr '\n' ' ')"'", - "draft": false, - "prerelease": false - }' \ - "${{ env.GITEA_SERVER_URL }}/api/v1/repos/${{ env.GITEA_REPOSITORY }}/releases" || echo "⚠️ Release 创建可能失败,但文件已成功更新" + -d "{ + \"tag_name\": \"${{ env.TAG_NAME }}\", + \"target_commitish\": \"release\", + \"name\": \"${{ env.RELEASE_NAME }}\", + \"body\": $RELEASE_BODY, + \"draft\": false, + \"prerelease\": false + }" \ + "${{ env.GITEA_SERVER_URL }}/api/v1/repos/${{ env.GITEA_REPOSITORY }}/releases") + + HTTP_CODE="${RESPONSE: -3}" + if [[ "$HTTP_CODE" -ge 200 && "$HTTP_CODE" -lt 300 ]]; then + echo "✅ Release 创建成功" + else + echo "⚠️ Release 创建可能失败 (HTTP $HTTP_CODE),但文件已成功更新" + echo "响应: ${RESPONSE%???}" + fi - name: Summary if: steps.check_changes.outputs.changes == 'true'