Prepare Codux 2.0.0 rc.3 #69
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Release GPUI Desktop | |
| on: | |
| push: | |
| tags: | |
| - "v*" | |
| workflow_dispatch: | |
| inputs: | |
| tag: | |
| description: "Source tag to build, for example v1.0.0-beta.1." | |
| required: false | |
| default: v1.0.0-beta.1 | |
| type: string | |
| channel: | |
| description: "Update channel to publish." | |
| required: false | |
| default: auto | |
| type: choice | |
| options: | |
| - auto | |
| - beta | |
| - stable | |
| permissions: | |
| contents: write | |
| env: | |
| FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true | |
| MACOSX_DEPLOYMENT_TARGET: "14.0" | |
| CMAKE_OSX_DEPLOYMENT_TARGET: "14.0" | |
| jobs: | |
| metadata: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| version: ${{ steps.meta.outputs.version }} | |
| channel: ${{ steps.meta.outputs.channel }} | |
| source_ref: ${{ steps.ref.outputs.source_ref }} | |
| env: | |
| SOURCE_REF: ${{ github.event_name == 'workflow_dispatch' && inputs.tag || github.ref_name }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.event_name == 'workflow_dispatch' && inputs.tag || github.ref }} | |
| - name: Resolve source ref | |
| id: ref | |
| shell: bash | |
| run: echo "source_ref=${SOURCE_REF}" >> "$GITHUB_OUTPUT" | |
| - name: Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| - name: Resolve release metadata | |
| id: meta | |
| shell: bash | |
| env: | |
| RELEASE_NOTES_PATH: dist/release-notes.md | |
| run: | | |
| mkdir -p dist | |
| requested_channel="${{ github.event_name == 'workflow_dispatch' && inputs.channel || 'auto' }}" | |
| node apps/desktop/scripts/release/prepare-release.mjs "${SOURCE_REF}" "${requested_channel}" | |
| - name: Upload release notes | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: release-notes | |
| path: dist/release-notes.md | |
| if-no-files-found: error | |
| build: | |
| needs: metadata | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - id: macos-aarch64 | |
| os: macos-26 | |
| target: aarch64-apple-darwin | |
| artifact_suffix: -debug | |
| - id: macos-x86_64 | |
| os: macos-26 | |
| target: x86_64-apple-darwin | |
| artifact_suffix: -debug | |
| - id: windows-x86_64 | |
| os: windows-latest | |
| target: x86_64-pc-windows-msvc | |
| runs-on: ${{ matrix.os }} | |
| env: | |
| CARGO_BUILD_TARGET: ${{ matrix.target }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ needs.metadata.outputs.source_ref }} | |
| - name: Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| targets: ${{ matrix.targets || matrix.target }} | |
| - name: Restore Rust cache | |
| uses: actions/cache/restore@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| target | |
| key: rust-release-${{ runner.os }}-${{ matrix.id }}-${{ hashFiles('Cargo.lock') }} | |
| restore-keys: | | |
| rust-release-${{ runner.os }}-${{ matrix.id }}- | |
| rust-release-${{ runner.os }}- | |
| - name: Apply release version | |
| shell: bash | |
| env: | |
| RELEASE_NOTES_PATH: dist/release-notes.md | |
| run: | | |
| mkdir -p dist | |
| node apps/desktop/scripts/release/prepare-release.mjs "${{ needs.metadata.outputs.source_ref }}" "${{ needs.metadata.outputs.channel }}" | |
| - name: Build | |
| shell: bash | |
| run: | | |
| if [[ "${RUNNER_OS}" == "Windows" ]]; then | |
| pwsh -NoProfile -ExecutionPolicy Bypass -File tools/build-windows.ps1 -Target "${CARGO_BUILD_TARGET}" | |
| else | |
| cargo build --release --target "${CARGO_BUILD_TARGET}" | |
| fi | |
| - name: Stage built binary | |
| shell: bash | |
| run: | | |
| rm -rf dist/binary | |
| mkdir -p dist/binary | |
| if [[ "${RUNNER_OS}" == "Windows" ]]; then | |
| cp "target/${CARGO_BUILD_TARGET}/release/codux.exe" dist/binary/codux.exe | |
| elif [[ "${RUNNER_OS}" == "macOS" ]]; then | |
| cp "target/${CARGO_BUILD_TARGET}/release/codux" dist/binary/codux | |
| else | |
| cp "target/${CARGO_BUILD_TARGET}/release/codux" dist/binary/codux | |
| fi | |
| - name: Upload built binary | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: built-binary-${{ matrix.id }} | |
| path: dist/binary/* | |
| if-no-files-found: error | |
| - name: Save Rust cache | |
| if: always() | |
| continue-on-error: true | |
| uses: actions/cache/save@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| target | |
| key: rust-release-${{ runner.os }}-${{ matrix.id }}-${{ hashFiles('Cargo.lock') }}-${{ github.run_id }} | |
| package: | |
| needs: | |
| - metadata | |
| - build | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - id: macos-aarch64 | |
| os: macos-26 | |
| target: aarch64-apple-darwin | |
| artifact_suffix: -debug | |
| - id: macos-x86_64 | |
| os: macos-26 | |
| target: x86_64-apple-darwin | |
| artifact_suffix: -debug | |
| - id: windows-x86_64 | |
| os: windows-latest | |
| target: x86_64-pc-windows-msvc | |
| runs-on: ${{ matrix.os }} | |
| env: | |
| CARGO_BUILD_TARGET: ${{ matrix.target }} | |
| RELEASE_BUILD_ID: ${{ matrix.id }} | |
| RELEASE_STAGE_DIR: release-artifacts | |
| RELEASE_ARTIFACT_SUFFIX: ${{ matrix.artifact_suffix || '' }} | |
| MACOS_ADHOC_SIGN: ${{ startsWith(matrix.id, 'macos-') && 'true' || '' }} | |
| TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }} | |
| TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ needs.metadata.outputs.source_ref }} | |
| - name: Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| - name: Install NSIS | |
| if: runner.os == 'Windows' | |
| shell: powershell | |
| run: choco install nsis -y --no-progress | |
| - name: Apply release version | |
| shell: bash | |
| env: | |
| RELEASE_NOTES_PATH: dist/release-notes.md | |
| run: | | |
| mkdir -p dist | |
| node apps/desktop/scripts/release/prepare-release.mjs "${{ needs.metadata.outputs.source_ref }}" "${{ needs.metadata.outputs.channel }}" | |
| - name: Download built binary | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: built-binary-${{ matrix.id }} | |
| path: dist/binary | |
| - name: Restore built binary | |
| shell: bash | |
| run: | | |
| mkdir -p "target/${CARGO_BUILD_TARGET}/release" | |
| if [[ "${RUNNER_OS}" == "Windows" ]]; then | |
| cp dist/binary/codux.exe "target/${CARGO_BUILD_TARGET}/release/codux.exe" | |
| elif [[ "${RUNNER_OS}" == "macOS" ]]; then | |
| cp dist/binary/codux "target/${CARGO_BUILD_TARGET}/release/codux" | |
| chmod +x "target/${CARGO_BUILD_TARGET}/release/codux" | |
| else | |
| cp dist/binary/codux "target/${CARGO_BUILD_TARGET}/release/codux" | |
| chmod +x "target/${CARGO_BUILD_TARGET}/release/codux" | |
| fi | |
| - name: Package | |
| shell: bash | |
| run: node apps/desktop/scripts/release/package-gpui.mjs | |
| - name: Upload package artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: package-${{ matrix.id }} | |
| path: release-artifacts/${{ matrix.id }}/* | |
| if-no-files-found: error | |
| publish: | |
| needs: | |
| - metadata | |
| - package | |
| runs-on: ubuntu-latest | |
| env: | |
| RELEASE_VERSION: ${{ needs.metadata.outputs.version }} | |
| RELEASE_CHANNEL: ${{ needs.metadata.outputs.channel }} | |
| RELEASE_TAG: ${{ needs.metadata.outputs.source_ref }} | |
| RELEASE_NOTES_PATH: dist/release-notes.md | |
| RELEASE_ARTIFACTS_DIR: release-artifacts | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ needs.metadata.outputs.source_ref }} | |
| - name: Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| - name: Download release notes | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: release-notes | |
| path: dist | |
| - name: Download packages | |
| uses: actions/download-artifact@v4 | |
| with: | |
| pattern: package-* | |
| path: release-artifacts | |
| merge-multiple: true | |
| - name: Publish GitHub release and update metadata | |
| run: node apps/desktop/scripts/release/publish-github-release.mjs |