name: 发布新版本时构建应用

on:
  release:
    types: [published]

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

    strategy:
      matrix:
        os: [windows-latest, macos-latest, ubuntu-latest]
        node-version: [20.x]

    steps:
      - name: Checkout
        uses: actions/checkout@v4.1.7

      - name: Set up Node.js
        uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node-version }}

      - name: Windows 设置镜像源
        if: matrix.os == 'windows-latest'
        run: yarn config set registry https://registry.npmmirror.com/


      - name: 安装依赖
        run: yarn install

      - name: Windows 构建
        if: matrix.os == 'windows-latest'
        run: yarn build:win

      - name: MacOS 构建
        if: matrix.os == 'macos-latest'
        run: yarn build:mac

      - name: Linux 构建
        if: matrix.os == 'ubuntu-latest'
        run: yarn build:linux

      - name: Windows 上传
        if: matrix.os == 'windows-latest'
        uses: actions/upload-artifact@v4
        with:
          name: ExamShowboard-Windows
          path: dist/*.exe

      - name: MacOS 上传
        if: matrix.os == 'macos-latest'
        uses: actions/upload-artifact@v4
        with:
          name: ExamShowboard-macOS
          path: dist/*.dmg

      - name: Linux 上传
        if: matrix.os == 'ubuntu-latest'
        uses: actions/upload-artifact@v4
        with:
          name: ExamShowboard-Linux
          path: dist/*.AppImage
