diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9678519..d78763d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,122 +3,194 @@ name: Build and Release on: push: branches: - - release + - main tags: - 'v*' workflow_dispatch: jobs: - build-linux: - runs-on: ubuntu-latest + build: + strategy: + matrix: + include: + - os: ubuntu-latest + platform: linux + - os: windows-latest + platform: win + - os: macos-latest + platform: mac + + runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - # Not needed anymore due to the removal of Pacman builds - # - name: Install build dependencies - # run: | - # sudo apt-get update - # sudo apt-get install -y libarchive-tools - - uses: actions/setup-node@v4 with: node-version: '22' - cache: 'npm' + cache: 'npm' - run: npm ci - - name: Build Linux Packages - run: | - npx electron-builder --linux --x64 --arm64 --publish never - - uses: actions/upload-artifact@v4 + - name: Build for ${{ matrix.os }} + run: npm run build:${{ matrix.platform }} + + - name: Upload Artifacts for ${{ matrix.os }} + uses: actions/upload-artifact@v4 with: - name: linux-builds + name: ${{ matrix.os }}-builds path: | + dist/*.exe + dist/*.exe.blockmap + dist/*.dmg + dist/*.zip dist/*.AppImage dist/*.AppImage.blockmap dist/*.deb dist/*.rpm dist/*.pkg.tar.zst - dist/latest-linux.yml - - build-windows: - runs-on: windows-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: '22' - cache: 'npm' - - run: npm ci - - - name: Build Windows Packages - run: npx electron-builder --win --publish never - - uses: actions/upload-artifact@v4 - with: - name: windows-builds - path: | - dist/*.exe - dist/*.exe.blockmap - dist/latest.yml - - build-macos: - runs-on: macos-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: '22' - cache: 'npm' - - run: npm ci - - - name: Build macOS Packages - run: npx electron-builder --mac --publish never - - uses: actions/upload-artifact@v4 - with: - name: macos-builds - path: | - dist/*.dmg - dist/*.zip - dist/latest-mac.yml + dist/latest*.yml release: - needs: [build-linux, build-windows, build-macos] + needs: build runs-on: ubuntu-latest if: | - startsWith(github.ref, 'refs/tags/v') || - github.ref == 'refs/heads/release' || - github.event_name == 'workflow_dispatch' - - permissions: - contents: write - + startsWith(github.ref, 'refs/tags/v') steps: - # FIX: './package.json' Module Not Found in `Get version` step - - name: Checkout code - uses: actions/checkout@v4 - - name: Download all artifacts uses: actions/download-artifact@v4 with: path: artifacts - + merge-multiple: true - name: Display structure of downloaded files run: ls -R artifacts - - name: Get version from package.json id: pkg_version run: echo "VERSION=$(node -p "require('./package.json').version")" >> $GITHUB_OUTPUT - - name: Create Release uses: softprops/action-gh-release@v2 with: - # If it's a tag, use the tag. tag_name: ${{ github.ref_type == 'tag' && github.ref_name || format('v{0}.r{1}', steps.pkg_version.outputs.VERSION, github.run_number) }} - # If it's the 'release' branch, use 'v2.0.2-beta.r42' - name: ${{ github.ref_type == 'tag' && github.ref_name || format('v{0}-beta.r{1}', steps.pkg_version.outputs.VERSION, github.run_number) }} files: | - artifacts/linux-builds/**/* - artifacts/windows-builds/**/* - artifacts/macos-builds/**/* + artifacts/ubuntu-latest-builds/**/* + artifacts/windows-latest-builds/**/* + artifacts/macos-latest-builds/**/* generate_release_notes: true draft: true - # DYNAMIC FLAGS: Mark as pre-release ONLY IF it's NOT a tag (meaning it's a branch push) - prerelease: ${{ github.ref_type != 'tag' }} + prerelease: false + + + + + + # BACKUP + # build-linux: + # runs-on: ubuntu-latest + # steps: + # - uses: actions/checkout@v4 + # # Not needed anymore due to the removal of Pacman builds + # # - name: Install build dependencies + # # run: | + # # sudo apt-get update + # # sudo apt-get install -y libarchive-tools + + # - uses: actions/setup-node@v4 + # with: + # node-version: '22' + # cache: 'npm' + # - run: npm ci + + # - name: Build Linux Packages + # run: | + # npx electron-builder --linux --x64 --arm64 --publish never + # - uses: actions/upload-artifact@v4 + # with: + # name: linux-builds + # path: | + # dist/*.AppImage + # dist/*.AppImage.blockmap + # dist/*.deb + # dist/*.rpm + # dist/*.pkg.tar.zst + # dist/latest-linux.yml + + # build-windows: + # runs-on: windows-latest + # steps: + # - uses: actions/checkout@v4 + # - uses: actions/setup-node@v4 + # with: + # node-version: '22' + # cache: 'npm' + # - run: npm ci + + # - name: Build Windows Packages + # run: npx electron-builder --win --publish never + # - uses: actions/upload-artifact@v4 + # with: + # name: windows-builds + # path: | + # dist/*.exe + # dist/*.exe.blockmap + # dist/latest.yml + + # build-macos: + # runs-on: macos-latest + # steps: + # - uses: actions/checkout@v4 + # - uses: actions/setup-node@v4 + # with: + # node-version: '22' + # cache: 'npm' + # - run: npm ci + + # - name: Build macOS Packages + # run: npx electron-builder --mac --publish never + # - uses: actions/upload-artifact@v4 + # with: + # name: macos-builds + # path: | + # dist/*.dmg + # dist/*.zip + # dist/latest-mac.yml + + # release: + # needs: [build-linux, build-windows, build-macos] + # runs-on: ubuntu-latest + # if: | + # startsWith(github.ref, 'refs/tags/v') || + # github.ref == 'refs/heads/release' || + # github.event_name == 'workflow_dispatch' + + # permissions: + # contents: write + + # steps: + # # FIX: './package.json' Module Not Found in `Get version` step + # - name: Checkout code + # uses: actions/checkout@v4 + + # - name: Download all artifacts + # uses: actions/download-artifact@v4 + # with: + # path: artifacts + + # - name: Display structure of downloaded files + # run: ls -R artifacts + + # - name: Get version from package.json + # id: pkg_version + # run: echo "VERSION=$(node -p "require('./package.json').version")" >> $GITHUB_OUTPUT + + # - name: Create Release + # uses: softprops/action-gh-release@v2 + # with: + # # If it's a tag, use the tag. + # tag_name: ${{ github.ref_type == 'tag' && github.ref_name || format('v{0}.r{1}', steps.pkg_version.outputs.VERSION, github.run_number) }} + # # If it's the 'release' branch, use 'v2.0.2-beta.r42' + # name: ${{ github.ref_type == 'tag' && github.ref_name || format('v{0}-beta.r{1}', steps.pkg_version.outputs.VERSION, github.run_number) }} + # files: | + # artifacts/linux-builds/**/* + # artifacts/windows-builds/**/* + # artifacts/macos-builds/**/* + # generate_release_notes: true + # draft: true + # # DYNAMIC FLAGS: Mark as pre-release ONLY IF it's NOT a tag (meaning it's a branch push) + # prerelease: ${{ github.ref_type != 'tag' }}