name: Release on: push: tags: - "v*" permissions: contents: write discussions: write concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: make-electron: name: Make Electron strategy: fail-fast: false matrix: arch: [x64, arm64] os: - name: macos image: macos-latest shell: bash forge_platform: darwin - name: linux image: ubuntu-latest shell: bash forge_platform: linux - name: windows image: win-signing shell: cmd forge_platform: win32 runs-on: ${{ matrix.os.image }} steps: - uses: actions/checkout@v4 - name: Set up node & dependencies uses: actions/setup-node@v4 with: node-version: 22 - name: Run the build uses: ./.github/actions/build-electron with: os: ${{ matrix.os.name }} arch: ${{ matrix.arch }} shell: ${{ matrix.os.shell }} forge_platform: ${{ matrix.os.forge_platform }} env: APPLE_APP_CERTIFICATE_BASE64: ${{ secrets.APPLE_APP_CERTIFICATE_BASE64 }} APPLE_APP_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_APP_CERTIFICATE_PASSWORD }} APPLE_INSTALLER_CERTIFICATE_BASE64: ${{ secrets.APPLE_INSTALLER_CERTIFICATE_BASE64 }} APPLE_INSTALLER_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_INSTALLER_CERTIFICATE_PASSWORD }} APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} APPLE_ID: ${{ secrets.APPLE_ID }} APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} WINDOWS_SIGN_EXECUTABLE: ${{ vars.WINDOWS_SIGN_EXECUTABLE }} - name: Upload the artifact uses: actions/upload-artifact@v4 with: name: release-desktop-${{ matrix.os.name }}-${{ matrix.arch }} path: upload/*.* build_server: name: Build Linux Server strategy: fail-fast: false matrix: arch: [x64, arm64] include: - arch: x64 runs-on: ubuntu-latest - arch: arm64 runs-on: ubuntu-24.04-arm runs-on: ${{ matrix.runs-on }} steps: - uses: actions/checkout@v4 - name: Run the build uses: ./.github/actions/build-server with: os: linux arch: ${{ matrix.arch }} - name: Upload the artifact uses: actions/upload-artifact@v4 with: name: release-server-linux-${{ matrix.arch }} path: upload/*.* publish_release: name: Publish release runs-on: ubuntu-latest needs: - make-electron - build_server steps: - run: mkdir upload - uses: actions/checkout@v4 with: sparse-checkout: | docs/Release Notes - name: Download all artifacts uses: actions/download-artifact@v4 with: merge-multiple: true pattern: release-* path: upload - name: Publish stable release uses: softprops/action-gh-release@v2 with: draft: false body_path: docs/Release Notes/Release Notes/${{ github.ref_name }}.md fail_on_unmatched_files: true files: upload/*.* discussion_category_name: Announcements make_latest: ${{ !contains(github.ref, 'rc') }} prerelease: ${{ !contains(github.ref, 'rc') }} token: ${{ secrets.RELEASE_PAT }}