name: Release on: push: tags: - "v*.*.*" permissions: contents: write jobs: build-linux: name: Build Linux AppImage runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 20 cache: "npm" - name: Install dependencies run: npm ci - name: Install Linux build deps run: | sudo apt-get update sudo apt-get install -y libarchive-tools rpm fakeroot - name: Build AppImage run: npm run dist env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Upload Linux artifact uses: actions/upload-artifact@v4 with: name: linux-dist path: dist/*.AppImage if-no-files-found: error build-windows: name: Build Windows Installer runs-on: windows-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 20 cache: "npm" - name: Install dependencies run: npm ci - name: Build Windows installer run: npm run dist:win env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Upload Windows artifact uses: actions/upload-artifact@v4 with: name: windows-dist path: | dist/*.exe dist/*.msi if-no-files-found: error build-mac: name: Build macOS DMG runs-on: macos-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 20 cache: "npm" - name: Install dependencies run: npm ci - name: Clear electron-builder cache run: rm -rf ~/Library/Caches/electron-builder - name: Build macOS DMG run: npm run dist:mac env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Upload macOS artifact uses: actions/upload-artifact@v4 with: name: mac-dist path: dist/*.dmg if-no-files-found: error release: name: Create GitHub Release needs: [build-linux, build-windows, build-mac] runs-on: ubuntu-latest steps: - name: Download all artifacts uses: actions/download-artifact@v4 with: path: artifacts - name: Create release and upload assets uses: softprops/action-gh-release@v2 with: name: LegacyLauncher ${{ github.ref_name }} draft: false prerelease: ${{ contains(github.ref_name, '-') }} generate_release_notes: true files: | artifacts/linux-dist/* artifacts/windows-dist/* artifacts/mac-dist/* env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}