# 工作流名称
name: Assemble Android Release

# 触发工作流程的事件
on:
  push:
    branches: [ master ]
    tags: [ v* ]
  pull_request:
    branches: [ master ]

  workflow_dispatch:

# 工作流环境变量
env:
  # 应用的application_id
  APP_ID: com.hola
  # 应用名称
  APP_NAME: Taro Demo
  # 打包类型
  BUILD_TYPE: release
  # 版本名称
  VERSION_NAME: 1.0.0
  # 版本号
  VERSION_CODE: 10
  # 密钥库文件
  KEYSTORE_FILE: debug.keystore
  # 密钥库口令
  KEYSTORE_PASSWORD: android
  # 密钥库别名
  KEYSTORE_KEY_ALIAS: androiddebugkey
  # 密钥库别名口令
  KEYSTORE_KEY_PASSWORD: android

# 工作流作业
jobs:
  assemble:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Project
        uses: actions/checkout@v2
      - name: Cache node_modules Folder
        uses: actions/cache@v2
        with:
          path: ${{ github.workspace }}/node_modules
          key: ${{ runner.os }}-node_modules
          restore-keys: ${{ runner.os }}-node_modules
      - name: Get Yarn Cache Directory Path
        id: yarn-cache-dir-path
        run: echo "::set-output name=dir::$(yarn cache dir)"
      - name: Cache Yarn
        uses: actions/cache@v2
        env:
          cache-name: yarn-cache
        with:
          path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
          key: ${{ runner.os }}-yarn-${{ hashFiles('**/package.json') }}
          restore-keys: |
            ${{ runner.os }}-yarn-
      - name: Install Dependencies
        run: |
          yarn
      - name: Cache Gradle
        uses: actions/cache@v2
        env:
          cache-name: gradle-cache
        with:
          path: ~/.gradle
          key: ${{ runner.os }}-gradle
          restore-keys: |
            ${{ runner.os }}-gradle
      - name: Assemble Android ${{ env.BUILD_TYPE }}
        run: |
          sudo apt install -y ruby-bundler
          cd android
          bundle update
          bundle exec fastlane assemble
        env:
          KEYSTORE_FILE: ${{ github.workspace }}/android/app/${{ env.KEYSTORE_FILE }}
      - name: Upload Android Products
        uses: actions/upload-artifact@v2
        with:
          name: app-${{ env.BUILD_TYPE }}
          path: ${{ github.workspace }}/android/app/build/outputs/apk/${{ env.BUILD_TYPE }}/app-${{ env.BUILD_TYPE }}.apk
      - name: Upload release assets
        uses: softprops/action-gh-release@v1
        if: startsWith(github.ref, 'refs/tags/')
        with:
          prerelease: ${{ contains(github.ref, 'beta') }}
          files: |
            android/app/build/outputs/apk/${{ env.BUILD_TYPE }}/app-${{ env.BUILD_TYPE }}.apk
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
