name: Build and Release on: push: tags: - 'v*' permissions: contents: write jobs: build: runs-on: ${{ matrix.os }} strategy: matrix: os: [macos-latest, ubuntu-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 - 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 release: needs: build runs-on: ubuntu-latest steps: - name: Download all artifacts uses: actions/download-artifact@v4 with: path: artifacts - name: Display structure of downloaded files run: ls -R artifacts - name: Create Release uses: softprops/action-gh-release@v2 with: files: | artifacts/macos-build/* artifacts/linux-build/* env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}