sync-to-gitee.yml 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. name: Sync Release to Gitee
  2. permissions:
  3. contents: read
  4. on:
  5. workflow_dispatch:
  6. inputs:
  7. tag_name:
  8. description: 'Release Tag to sync (e.g. v1.0.0)'
  9. required: true
  10. type: string
  11. # 配置你的 Gitee 仓库信息
  12. env:
  13. GITEE_OWNER: 'QuantumNous' # 修改为你的 Gitee 用户名
  14. GITEE_REPO: 'new-api' # 修改为你的 Gitee 仓库名
  15. jobs:
  16. sync-to-gitee:
  17. runs-on: sync
  18. steps:
  19. - name: Checkout
  20. uses: actions/checkout@v3
  21. with:
  22. fetch-depth: 0
  23. - name: Get Release Info
  24. id: release_info
  25. env:
  26. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  27. TAG_NAME: ${{ github.event.inputs.tag_name }}
  28. run: |
  29. # 获取 release 信息
  30. RELEASE_INFO=$(gh release view "$TAG_NAME" --json name,body,tagName,targetCommitish)
  31. RELEASE_NAME=$(echo "$RELEASE_INFO" | jq -r '.name')
  32. TARGET_COMMITISH=$(echo "$RELEASE_INFO" | jq -r '.targetCommitish')
  33. # 使用多行字符串输出
  34. {
  35. echo "release_name=$RELEASE_NAME"
  36. echo "target_commitish=$TARGET_COMMITISH"
  37. echo "release_body<<EOF"
  38. echo "$RELEASE_INFO" | jq -r '.body'
  39. echo "EOF"
  40. } >> $GITHUB_OUTPUT
  41. # 下载 release 的所有附件
  42. gh release download "$TAG_NAME" --dir ./release_assets || echo "No assets to download"
  43. # 列出下载的文件
  44. ls -la ./release_assets/ || echo "No assets directory"
  45. - name: Create Gitee Release
  46. id: create_release
  47. uses: nICEnnnnnnnLee/[email protected]
  48. with:
  49. gitee_action: create_release
  50. gitee_owner: ${{ env.GITEE_OWNER }}
  51. gitee_repo: ${{ env.GITEE_REPO }}
  52. gitee_token: ${{ secrets.GITEE_TOKEN }}
  53. gitee_tag_name: ${{ github.event.inputs.tag_name }}
  54. gitee_release_name: ${{ steps.release_info.outputs.release_name }}
  55. gitee_release_body: ${{ steps.release_info.outputs.release_body }}
  56. gitee_target_commitish: ${{ steps.release_info.outputs.target_commitish }}
  57. - name: Upload Assets to Gitee
  58. if: hashFiles('release_assets/*') != ''
  59. uses: nICEnnnnnnnLee/[email protected]
  60. with:
  61. gitee_action: upload_asset
  62. gitee_owner: ${{ env.GITEE_OWNER }}
  63. gitee_repo: ${{ env.GITEE_REPO }}
  64. gitee_token: ${{ secrets.GITEE_TOKEN }}
  65. gitee_release_id: ${{ steps.create_release.outputs.release-id }}
  66. gitee_upload_retry_times: 3
  67. gitee_files: |
  68. release_assets/*
  69. - name: Cleanup
  70. if: always()
  71. run: |
  72. rm -rf release_assets/
  73. - name: Summary
  74. if: success()
  75. run: |
  76. echo "✅ Successfully synced release ${{ github.event.inputs.tag_name }} to Gitee!"
  77. echo "🔗 Gitee Release URL: https://gitee.com/${{ env.GITEE_OWNER }}/${{ env.GITEE_REPO }}/releases/tag/${{ github.event.inputs.tag_name }}"