name: Android Release Build and Publish

on:
  push:
    tags:
      - 'v*'  # 当推送一个新的版本标签（例如 v1.0.0）时触发
  workflow_dispatch:  # 支持手动触发

jobs:
  build:
    name: Build APK and Release
    runs-on: ubuntu-latest

    steps:
      # Step 1: Check out the repository
      - name: Checkout repository
        uses: actions/checkout@v3

      # Step 2: Set up JDK
      - name: Set up JDK 17
        uses: actions/setup-java@v3
        with:
          distribution: 'temurin'
          java-version: '17'

      # Step 3: Grant execution permissions for Gradle wrapper
      - name: Grant execute permission for gradlew
        run: chmod +x ./gradlew

      # Step 4: Clean the project
      - name: Clean build directory
        run: ./gradlew clean

      # Step 5: Build the release APK
      - name: Build release APK
        run: ./gradlew assembleRelease

      # Step 6: Archive the generated APK
      - name: Archive release APK
        uses: actions/upload-artifact@v3
        with:
          name: app-release.apk
          path: app/build/outputs/apk/debug/app-release.apk

      # Step 7: Create a GitHub Release
      - name: Create Release
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ github.ref_name }}  # 使用版本标签
          release_name: Release ${{ github.ref_name }}
          draft: false
          prerelease: false

      # Step 8: Upload APK to the Release
      - name: Upload Release Asset
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_path: app/build/outputs/apk/debug/app-release.apk
          asset_name: app-release.apk
          asset_content_type: application/vnd.android.package-archive
