name: Android CI

# 触发器
on:
  push:
    tags:
      - *-beta
  pull_request:
    tags:
      - *-beta

jobs:
  build:

    runs-on: ubuntu-latest
    
    # 设置 JDK 环境
    steps:
    - uses: actions/checkout@v3
    - name: set up JDK 11
      uses: actions/setup-java@v3
      with:
        java-version: '11'
        distribution: 'temurin'
        cache: gradle
    
    - name: Grant execute permission for gradlew
      run: chmod +x gradlew
      
    # 获取应用打包秘钥库
    - name: Checkout Android Keystore
      uses: actions/checkout@v3
      with:
        repository: zhangsken/keystore # 存储应用打包用的 keystore 的仓库（格式：用户名/仓库名）
        token: ${{ secrets.APP_SECRET_TOKEN_1 }} # 连接仓库的 token , 需要单独配置
        path: keystore # 仓库的根目录名
        
    # 打包 Stage Release 版本应用
    - name: Build with Gradle
      run: bash ./gradlew assembleBetaRelease
    # 创建release
    - name: Create Release
      id: create_release
      uses: actions/create-release@v1
      env:
        GITHUB_TOKEN: ${{ secrets.APP_SECRET_TOKEN_1 }}
        # GitHub 会自动创建 GITHUB_TOKEN 密码以在工作流程中使用。 
        # 您可以使用 GITHUB_TOKEN 在工作流程运行中进行身份验证。
        # 当您启用 GitHub Actions 时，GitHub 在您的仓库中安装 GitHub 应用程序。 
        # GITHUB_TOKEN 密码是一种 GitHub 应用程序 安装访问令牌。 
        # 您可以使用安装访问令牌代表仓库中安装的 GitHub 应用程序 进行身份验证。 
        # 令牌的权限仅限于包含您的工作流程的仓库。 更多信息请参阅“GITHUB_TOKEN 的权限”。
        # 在每个作业开始之前， GitHub 将为作业提取安装访问令牌。 令牌在作业完成后过期。
      with:
        tag_name: ${{ github.ref }}
        release_name: Release ${{ github.ref }}
        draft: false
        prerelease: false
        
    # 获取 APK 版本号
    - name: Get Version Name
      uses: actions/github-script@v3
      id: get-version
      with:
        script: |
          const str=process.env.GITHUB_REF;
          return str.substring(str.indexOf("v"));
        result-encoding: string
    # 上传至 Release 的资源
    - name: Upload Release Asset
      id: upload-release-asset 
      uses: actions/upload-release-asset@v1
      env:
        GITHUB_TOKEN: ${{ secrets.APP_SECRET_TOKEN_1 }}
      with:
        upload_url: ${{ steps.create_release.outputs.upload_url }} # 上传网址，无需改动
        #asset_path: app/build/outputs/apk/release/app-release.apk # 上传路径(Release)
        asset_path: app/build/outputs/apk/beta/release/app-beta-release.apk # 上传路径(WinBoll Stage Release)
        asset_name: WinBoll-${{steps.get-version.outputs.result}}0.apk # 资源名
        asset_content_type: application/vnd.android.package-archiv # 资源类型
        
    # 存档打包的文件
    - name: Archive production artifacts
      uses: actions/upload-artifact@v2
      with:
        name: build
        path: app/build/outputs # 将打包之后的文件全部上传（里面会有混淆的 map 文件）
