name: Build and Release on: push: tags: - 'v*' jobs: release: runs-on: ${{ matrix.os }} strategy: matrix: os: [macos-latest, ubuntu-latest, windows-latest] steps: - name: Check out Git repository uses: actions/checkout@v4 - name: Install Node.js uses: actions/setup-node@v4 with: node-version: 20 - name: Install dependencies run: npm install - name: Build application run: npm run dist env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Upload artifacts (macOS) if: matrix.os == 'macos-latest' uses: actions/upload-artifact@v4 with: name: macos-build path: | dist/*.dmg dist/*.zip - name: Upload artifacts (Linux) if: matrix.os == 'ubuntu-latest' uses: actions/upload-artifact@v4 with: name: linux-build path: | dist/*.AppImage dist/*.deb - name: Upload artifacts (Windows) if: matrix.os == 'windows-latest' uses: actions/upload-artifact@v4 with: name: windows-build path: | dist/*.exe dist/*.zip - name: Release uses: softprops/action-gh-release@v2 if: startsWith(github.ref, 'refs/tags/') with: files: | dist/*.dmg dist/*.zip dist/*.AppImage dist/*.deb dist/*.exe env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}