Skip to content
yaml
# main.yml

# Workflow's name
name: Build Electron App For Win/Mac

# Workflow's trigger
on:
  push:
    tags:
      - "v*.*.*"

# Workflow's jobs
jobs:
  # job's id
  release:
    # job's name
    name: build and release electron app

    # the type of machine to run the job on
    runs-on: ${{ matrix.os }}

    # create a build matrix for jobs
    strategy:
      fail-fast: false
      matrix:
        os: [windows-2019, macos-10.15]

    # create steps
    steps:
      # step1: check out repository
      - name: Check out git repository
        uses: actions/checkout@v2

      # step2: install node env
      - name: Install Node.js
        uses: actions/setup-node@v2-beta

      # step3: npm install
      - name: npm install
        run: |
          npm install

      # step4: build app for mac/win
      - name: build windows app
        if: matrix.os == 'windows-2019'
        run: |
          npm run electron:build-win
        env:
          GH_TOKEN: bef0b46667d2b13f8asdasdasd762873af59f71c

      - name: build mac app
        if: matrix.os == 'macos-10.15'
        run: |
          npm run electron:build
        env:
          GH_TOKEN: bef0b46667d2b13f8asdasdasd762873af59f71c

      # step5: cleanup artifacts in dist_electron
      - name: cleanup artifacts for windows
        if: matrix.os == 'windows-2019'
        run: |
          npx rimraf "dist_electron/!(*.exe)"

      - name: cleanup artifacts for macosZ
        if: matrix.os == 'macos-10.15'
        run: |
          npx rimraf "dist_electron/!(*.dmg)"

      # step6: upload artifacts
      - name: upload artifacts
        uses: actions/upload-artifact@v2
        with:
          name: ${{ matrix.os }}
          path: dist_electron

      # step7: create release
      - name: release
        uses: softprops/action-gh-release@v1
        if: startsWith(github.ref, 'refs/tags/')
        with:
          files: "dist_electron/**"
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}