# main.yml

# Workflow's name
name: Auto Build

# Workflow's trigger
on:
  workflow_dispatch:
  push:
    branches:
      - release

env:
  ELECTRON_OUTPUT_PATH: ./dist_electron
  CSC_LINK: ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
  CSC_KEY_PASSWORD: ${{ secrets.P12_PASSWORD }}

jobs:
  release:
    name: build and release electron app

    runs-on: ${{ matrix.os }}

    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, macos-12, windows-latest]

    steps:
      - name: Check out git repository
        uses: actions/checkout@v2

      # step2: sign
      - name: Install the Apple certificates
        if: matrix.os == 'macos-12'
        run: |
          CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12
          echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode -o $CERTIFICATE_PATH

      # step3: install node env
      - name: Install Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '16.x'

      - name: Install system deps
        if: matrix.os == 'ubuntu-latest'
        run: |
          sudo apt-get install --no-install-recommends -y icnsutils graphicsmagick xz-utils

      # step3: yarn
      - name: Yarn install macos
        if: matrix.os == 'macos-12'
        run: |
          yarn
          yarn global add xvfb-maybe
          npm rebuild --platform=darwin --arch=arm64 sharp

      - name: Yarn install windows
        if: matrix.os == 'windows-latest'
        run: |
          yarn
          yarn global add xvfb-maybe
        
      - name: Yarn install linux
        if: matrix.os == 'ubuntu-latest'
        run: |
          yarn
          yarn global add xvfb-maybe

      - name: Build  & release app
        run: |
          yarn release
          yarn upload-dist
        env:
          GH_TOKEN: ${{ secrets.GH_TOKEN }}
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          R2_SECRET_ID: ${{ secrets.R2_SECRET_ID }}
          R2_SECRET_KEY: ${{ secrets.R2_SECRET_KEY }}
          R2_ACCOUNT_ID: ${{ secrets.R2_ACCOUNT_ID }}
          ELECTRON_SKIP_NOTARIZATION: ${{ secrets.ELECTRON_SKIP_NOTARIZATION }}
          XCODE_APP_LOADER_EMAIL: ${{ secrets.XCODE_APP_LOADER_EMAIL }}
          XCODE_APP_LOADER_PASSWORD: ${{ secrets.XCODE_APP_LOADER_PASSWORD }}
          XCODE_TEAM_ID: ${{ secrets.XCODE_TEAM_ID }}
          BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
          P12_PASSWORD: ${{ secrets.P12_PASSWORD }}
          BUILD_PROVISION_PROFILE_BASE64: ${{ secrets.BUILD_PROVISION_PROFILE_BASE64 }}
          KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
