From cbe2a83096e37ec965a79a324aabcce000d9c99c Mon Sep 17 00:00:00 2001 From: Ammar Date: Fri, 10 Oct 2025 14:31:16 -0500 Subject: [PATCH 1/7] =?UTF-8?q?=F0=9F=A4=96=20Add=20release=20workflow=20f?= =?UTF-8?q?or=20automated=20binary=20publishing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Create release.yml workflow triggered on release publish - Configure electron-builder to publish to GitHub releases - Add workflow documentation explaining release process - Keep build steps in sync with build.yml for consistency Release process: 1. Bump version in package.json 2. Create draft release with notes on GitHub 3. Publish release → workflow builds and attaches binaries 4. Users download from GitHub releases The workflow reuses the same build setup as build.yml but publishes artifacts to GitHub releases instead of workflow artifacts. --- .github/workflows/README.md | 55 ++++++++++++++++++++++++++ .github/workflows/release.yml | 73 +++++++++++++++++++++++++++++++++++ package.json | 4 ++ 3 files changed, 132 insertions(+) create mode 100644 .github/workflows/README.md create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/README.md b/.github/workflows/README.md new file mode 100644 index 000000000..1aa8e3a6a --- /dev/null +++ b/.github/workflows/README.md @@ -0,0 +1,55 @@ +# GitHub Actions Workflows + +## Overview + +This directory contains CI/CD workflows for cmux: + +- **ci.yml** - Runs on PRs and merge queue (lint, typecheck, tests) +- **build.yml** - Builds distributables on PRs (verification only, no publishing) +- **release.yml** - Builds and publishes distributables when a release is published +- **docs.yml** - Builds and deploys documentation + +## Release Process + +### Human Steps + +1. **Bump version** in `package.json` (e.g., `0.0.1` → `0.1.0`) +2. **Commit and push** the version change to main +3. **Create a draft release** on GitHub: + - Go to Releases → Draft a new release + - Create a new tag (e.g., `v0.1.0`) + - Write release notes +4. **Publish the draft release** + - This triggers the `release.yml` workflow +5. **Wait for builds** (~10-15 minutes) + - macOS builds (x64 + arm64 DMGs) + - Linux builds (AppImage) + - Binaries are automatically attached to the release + +### How It Works + +The release workflow is triggered when you publish a release (not when you create a draft). electron-builder detects the `GH_TOKEN` environment variable and automatically uploads built artifacts to the GitHub release. + +## Keeping Workflows in Sync + +The `build.yml` and `release.yml` workflows share similar setup steps (install dependencies, build application, code signing). When making changes to build configuration: + +1. **Update both workflows** if changing: + - Dependency installation steps + - Build process + - Code signing setup + - Platform-specific configuration + +2. **Key differences**: + - `build.yml` uses `--publish never` (via `make dist-*`) + - `release.yml` uses `--publish always` and requires `GH_TOKEN` + - `build.yml` uploads artifacts for PR review + - `release.yml` attaches artifacts directly to GitHub releases + +## Windows Support + +Windows builds are not currently included in release automation. To add Windows support: + +1. Add a `build-windows` job to `release.yml` (see `build.yml` for structure) +2. Add Windows code signing certificate secrets +3. Test the NSIS installer configuration in `package.json` diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 000000000..88b63ae0b --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,73 @@ +name: Release + +on: + release: + types: [published] + +jobs: + build-macos: + name: Build and Release macOS + runs-on: macos-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Bun + uses: oven-sh/setup-bun@v2 + with: + bun-version: latest + + - name: Install dependencies + run: bun install --frozen-lockfile + + - name: Build application + run: bun run build + + - name: Package and publish for macOS + run: | + # Decode certificate to file to avoid issues with newlines in base64 string + if [ -n "${{ secrets.MACOS_CERTIFICATE }}" ]; then + echo "${{ secrets.MACOS_CERTIFICATE }}" | base64 -D > /tmp/certificate.p12 + export CSC_LINK="/tmp/certificate.p12" + export CSC_KEY_PASSWORD="${{ secrets.MACOS_CERTIFICATE_PWD }}" + fi + + # Notarization credentials (optional - will skip if not provided) + if [ -n "${{ secrets.AC_APIKEY_ID }}" ]; then + # Decode API key to file + echo "${{ secrets.AC_APIKEY_P8_BASE64 }}" | base64 -D > /tmp/AuthKey.p8 + export APPLE_API_KEY="/tmp/AuthKey.p8" + export APPLE_API_KEY_ID="${{ secrets.AC_APIKEY_ID }}" + export APPLE_API_ISSUER="${{ secrets.AC_APIKEY_ISSUER_ID }}" + echo "✅ Notarization credentials found (API key) - will notarize" + else + echo "⚠️ No notarization credentials - skipping notarization" + fi + + # Publish to GitHub release + bun x electron-builder --mac --publish always + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + build-linux: + name: Build and Release Linux + runs-on: ${{ github.repository_owner == 'coder' && 'depot-ubuntu-22.04-16' || 'ubuntu-latest' }} + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Bun + uses: oven-sh/setup-bun@v2 + with: + bun-version: latest + + - name: Install dependencies + run: bun install --frozen-lockfile + + - name: Build application + run: bun run build + + - name: Package and publish for Linux + run: bun x electron-builder --linux --publish always + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/package.json b/package.json index a5893e2f1..0cd7365b1 100644 --- a/package.json +++ b/package.json @@ -96,6 +96,10 @@ "build": { "appId": "com.cmux.app", "productName": "Cmux", + "publish": { + "provider": "github", + "releaseType": "release" + }, "directories": { "output": "release" }, From 1f4a4ff3fc2b45fa77bb4dfd8fb5958dfbe120cb Mon Sep 17 00:00:00 2001 From: Ammar Date: Fri, 10 Oct 2025 14:43:22 -0500 Subject: [PATCH 2/7] Remove workflow README documentation --- .github/workflows/README.md | 55 ------------------------------------- 1 file changed, 55 deletions(-) delete mode 100644 .github/workflows/README.md diff --git a/.github/workflows/README.md b/.github/workflows/README.md deleted file mode 100644 index 1aa8e3a6a..000000000 --- a/.github/workflows/README.md +++ /dev/null @@ -1,55 +0,0 @@ -# GitHub Actions Workflows - -## Overview - -This directory contains CI/CD workflows for cmux: - -- **ci.yml** - Runs on PRs and merge queue (lint, typecheck, tests) -- **build.yml** - Builds distributables on PRs (verification only, no publishing) -- **release.yml** - Builds and publishes distributables when a release is published -- **docs.yml** - Builds and deploys documentation - -## Release Process - -### Human Steps - -1. **Bump version** in `package.json` (e.g., `0.0.1` → `0.1.0`) -2. **Commit and push** the version change to main -3. **Create a draft release** on GitHub: - - Go to Releases → Draft a new release - - Create a new tag (e.g., `v0.1.0`) - - Write release notes -4. **Publish the draft release** - - This triggers the `release.yml` workflow -5. **Wait for builds** (~10-15 minutes) - - macOS builds (x64 + arm64 DMGs) - - Linux builds (AppImage) - - Binaries are automatically attached to the release - -### How It Works - -The release workflow is triggered when you publish a release (not when you create a draft). electron-builder detects the `GH_TOKEN` environment variable and automatically uploads built artifacts to the GitHub release. - -## Keeping Workflows in Sync - -The `build.yml` and `release.yml` workflows share similar setup steps (install dependencies, build application, code signing). When making changes to build configuration: - -1. **Update both workflows** if changing: - - Dependency installation steps - - Build process - - Code signing setup - - Platform-specific configuration - -2. **Key differences**: - - `build.yml` uses `--publish never` (via `make dist-*`) - - `release.yml` uses `--publish always` and requires `GH_TOKEN` - - `build.yml` uploads artifacts for PR review - - `release.yml` attaches artifacts directly to GitHub releases - -## Windows Support - -Windows builds are not currently included in release automation. To add Windows support: - -1. Add a `build-windows` job to `release.yml` (see `build.yml` for structure) -2. Add Windows code signing certificate secrets -3. Test the NSIS installer configuration in `package.json` From d7f7bbf7ff4d9c84703c927e3907fa53e67d9c10 Mon Sep 17 00:00:00 2001 From: Ammar Date: Fri, 10 Oct 2025 14:45:35 -0500 Subject: [PATCH 3/7] DRY workflows with composite action and signing script - Create composite action .github/actions/setup-cmux for common setup - Reduces 4 steps (checkout, bun, install, build) to 1 step - Extract macOS code signing to scripts/setup-macos-signing.sh - Reduces ~17 lines of inline bash to 1 step - Makes signing logic testable locally - Update build.yml to use composite action and signing script - Update release.yml to use composite action and signing script Benefits: - Single source of truth for build setup - Changes to build process update both workflows - Workflows are more readable (fewer lines) - Code signing script can be tested independently --- .github/actions/setup-cmux/action.yml | 20 +++++++++ .github/workflows/build.yml | 57 +++++--------------------- .github/workflows/release.yml | 58 +++++---------------------- scripts/setup-macos-signing.sh | 34 ++++++++++++++++ 4 files changed, 76 insertions(+), 93 deletions(-) create mode 100644 .github/actions/setup-cmux/action.yml create mode 100755 scripts/setup-macos-signing.sh diff --git a/.github/actions/setup-cmux/action.yml b/.github/actions/setup-cmux/action.yml new file mode 100644 index 000000000..6ba42059d --- /dev/null +++ b/.github/actions/setup-cmux/action.yml @@ -0,0 +1,20 @@ +name: 'Setup cmux build environment' +description: 'Checkout code, setup Bun, install dependencies, and build application' +runs: + using: "composite" + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Bun + uses: oven-sh/setup-bun@v2 + with: + bun-version: latest + + - name: Install dependencies + run: bun install --frozen-lockfile + shell: bash + + - name: Build application + run: bun run build + shell: bash diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 62e6fb423..e2255b171 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -11,45 +11,22 @@ jobs: name: Build macOS runs-on: macos-latest steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup Bun - uses: oven-sh/setup-bun@v2 - with: - bun-version: latest - - - name: Install dependencies - run: bun install --frozen-lockfile + - uses: ./.github/actions/setup-cmux - name: Install ImageMagick run: brew install imagemagick - - name: Build application - run: bun run build + - name: Setup code signing + run: ./scripts/setup-macos-signing.sh + env: + MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }} + MACOS_CERTIFICATE_PWD: ${{ secrets.MACOS_CERTIFICATE_PWD }} + AC_APIKEY_P8_BASE64: ${{ secrets.AC_APIKEY_P8_BASE64 }} + AC_APIKEY_ID: ${{ secrets.AC_APIKEY_ID }} + AC_APIKEY_ISSUER_ID: ${{ secrets.AC_APIKEY_ISSUER_ID }} - name: Package for macOS - run: | - # Decode certificate to file to avoid issues with newlines in base64 string - if [ -n "${{ secrets.MACOS_CERTIFICATE }}" ]; then - echo "${{ secrets.MACOS_CERTIFICATE }}" | base64 -D > /tmp/certificate.p12 - export CSC_LINK="/tmp/certificate.p12" - export CSC_KEY_PASSWORD="${{ secrets.MACOS_CERTIFICATE_PWD }}" - fi - - # Notarization credentials (optional - will skip if not provided) - if [ -n "${{ secrets.AC_APIKEY_ID }}" ]; then - # Decode API key to file - echo "${{ secrets.AC_APIKEY_P8_BASE64 }}" | base64 -D > /tmp/AuthKey.p8 - export APPLE_API_KEY="/tmp/AuthKey.p8" - export APPLE_API_KEY_ID="${{ secrets.AC_APIKEY_ID }}" - export APPLE_API_ISSUER="${{ secrets.AC_APIKEY_ISSUER_ID }}" - echo "✅ Notarization credentials found (API key) - will notarize" - else - echo "⚠️ No notarization credentials - skipping notarization" - fi - - make dist-mac + run: make dist-mac - name: Upload macOS DMG (x64) uses: actions/upload-artifact@v4 @@ -71,23 +48,11 @@ jobs: name: Build Linux runs-on: ${{ github.repository_owner == 'coder' && 'depot-ubuntu-22.04-16' || 'ubuntu-latest' }} steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup Bun - uses: oven-sh/setup-bun@v2 - with: - bun-version: latest - - - name: Install dependencies - run: bun install --frozen-lockfile + - uses: ./.github/actions/setup-cmux - name: Install ImageMagick run: sudo apt-get update && sudo apt-get install -y imagemagick - - name: Build application - run: bun run build - - name: Package for Linux run: make dist-linux diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 88b63ae0b..162f4d932 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,43 +9,19 @@ jobs: name: Build and Release macOS runs-on: macos-latest steps: - - name: Checkout code - uses: actions/checkout@v4 + - uses: ./.github/actions/setup-cmux - - name: Setup Bun - uses: oven-sh/setup-bun@v2 - with: - bun-version: latest - - - name: Install dependencies - run: bun install --frozen-lockfile - - - name: Build application - run: bun run build + - name: Setup code signing + run: ./scripts/setup-macos-signing.sh + env: + MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }} + MACOS_CERTIFICATE_PWD: ${{ secrets.MACOS_CERTIFICATE_PWD }} + AC_APIKEY_P8_BASE64: ${{ secrets.AC_APIKEY_P8_BASE64 }} + AC_APIKEY_ID: ${{ secrets.AC_APIKEY_ID }} + AC_APIKEY_ISSUER_ID: ${{ secrets.AC_APIKEY_ISSUER_ID }} - name: Package and publish for macOS - run: | - # Decode certificate to file to avoid issues with newlines in base64 string - if [ -n "${{ secrets.MACOS_CERTIFICATE }}" ]; then - echo "${{ secrets.MACOS_CERTIFICATE }}" | base64 -D > /tmp/certificate.p12 - export CSC_LINK="/tmp/certificate.p12" - export CSC_KEY_PASSWORD="${{ secrets.MACOS_CERTIFICATE_PWD }}" - fi - - # Notarization credentials (optional - will skip if not provided) - if [ -n "${{ secrets.AC_APIKEY_ID }}" ]; then - # Decode API key to file - echo "${{ secrets.AC_APIKEY_P8_BASE64 }}" | base64 -D > /tmp/AuthKey.p8 - export APPLE_API_KEY="/tmp/AuthKey.p8" - export APPLE_API_KEY_ID="${{ secrets.AC_APIKEY_ID }}" - export APPLE_API_ISSUER="${{ secrets.AC_APIKEY_ISSUER_ID }}" - echo "✅ Notarization credentials found (API key) - will notarize" - else - echo "⚠️ No notarization credentials - skipping notarization" - fi - - # Publish to GitHub release - bun x electron-builder --mac --publish always + run: bun x electron-builder --mac --publish always env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -53,19 +29,7 @@ jobs: name: Build and Release Linux runs-on: ${{ github.repository_owner == 'coder' && 'depot-ubuntu-22.04-16' || 'ubuntu-latest' }} steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup Bun - uses: oven-sh/setup-bun@v2 - with: - bun-version: latest - - - name: Install dependencies - run: bun install --frozen-lockfile - - - name: Build application - run: bun run build + - uses: ./.github/actions/setup-cmux - name: Package and publish for Linux run: bun x electron-builder --linux --publish always diff --git a/scripts/setup-macos-signing.sh b/scripts/setup-macos-signing.sh new file mode 100755 index 000000000..0c23800aa --- /dev/null +++ b/scripts/setup-macos-signing.sh @@ -0,0 +1,34 @@ +#!/bin/bash +# Sets up macOS code signing and notarization from GitHub secrets +# Usage: ./scripts/setup-macos-signing.sh +# +# Required environment variables: +# MACOS_CERTIFICATE - Base64-encoded .p12 certificate +# MACOS_CERTIFICATE_PWD - Certificate password +# AC_APIKEY_P8_BASE64 - Base64-encoded Apple API key (.p8) +# AC_APIKEY_ID - Apple API Key ID +# AC_APIKEY_ISSUER_ID - Apple API Issuer ID + +set -euo pipefail + +# Setup code signing certificate +if [ -n "${MACOS_CERTIFICATE:-}" ]; then + echo "Setting up code signing certificate..." + echo "$MACOS_CERTIFICATE" | base64 -D > /tmp/certificate.p12 + echo "CSC_LINK=/tmp/certificate.p12" >> "$GITHUB_ENV" + echo "CSC_KEY_PASSWORD=$MACOS_CERTIFICATE_PWD" >> "$GITHUB_ENV" +else + echo "⚠️ No code signing certificate provided - building unsigned" +fi + +# Setup notarization credentials +if [ -n "${AC_APIKEY_ID:-}" ]; then + echo "Setting up notarization credentials..." + echo "$AC_APIKEY_P8_BASE64" | base64 -D > /tmp/AuthKey.p8 + echo "APPLE_API_KEY=/tmp/AuthKey.p8" >> "$GITHUB_ENV" + echo "APPLE_API_KEY_ID=$AC_APIKEY_ID" >> "$GITHUB_ENV" + echo "APPLE_API_ISSUER=$AC_APIKEY_ISSUER_ID" >> "$GITHUB_ENV" + echo "✅ Notarization credentials configured" +else + echo "⚠️ No notarization credentials - skipping notarization" +fi From e49d451450e98af87ca7c15bcca5f6754ec175cc Mon Sep 17 00:00:00 2001 From: Ammar Date: Fri, 10 Oct 2025 14:45:47 -0500 Subject: [PATCH 4/7] Grant release workflow write permission for uploads Add contents: write permission so electron-builder can upload binaries to GitHub releases. Without this, the default token only has read access and uploads fail with 403. --- .github/workflows/release.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 162f4d932..2bbe08272 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -4,6 +4,9 @@ on: release: types: [published] +permissions: + contents: write # Required for electron-builder to upload release assets + jobs: build-macos: name: Build and Release macOS From 27b7cffdb8411f409d11c0c89133df00136d61ad Mon Sep 17 00:00:00 2001 From: Ammar Date: Fri, 10 Oct 2025 14:47:59 -0500 Subject: [PATCH 5/7] Fix composite action: checkout must happen before using local action --- .github/actions/setup-cmux/action.yml | 5 +---- .github/workflows/build.yml | 6 ++++++ .github/workflows/release.yml | 6 ++++++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/.github/actions/setup-cmux/action.yml b/.github/actions/setup-cmux/action.yml index 6ba42059d..ccbb48459 100644 --- a/.github/actions/setup-cmux/action.yml +++ b/.github/actions/setup-cmux/action.yml @@ -1,11 +1,8 @@ name: 'Setup cmux build environment' -description: 'Checkout code, setup Bun, install dependencies, and build application' +description: 'Setup Bun, install dependencies, and build application' runs: using: "composite" steps: - - name: Checkout code - uses: actions/checkout@v4 - - name: Setup Bun uses: oven-sh/setup-bun@v2 with: diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e2255b171..cf4d16628 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -11,6 +11,9 @@ jobs: name: Build macOS runs-on: macos-latest steps: + - name: Checkout code + uses: actions/checkout@v4 + - uses: ./.github/actions/setup-cmux - name: Install ImageMagick @@ -48,6 +51,9 @@ jobs: name: Build Linux runs-on: ${{ github.repository_owner == 'coder' && 'depot-ubuntu-22.04-16' || 'ubuntu-latest' }} steps: + - name: Checkout code + uses: actions/checkout@v4 + - uses: ./.github/actions/setup-cmux - name: Install ImageMagick diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2bbe08272..675c9bf26 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,6 +12,9 @@ jobs: name: Build and Release macOS runs-on: macos-latest steps: + - name: Checkout code + uses: actions/checkout@v4 + - uses: ./.github/actions/setup-cmux - name: Setup code signing @@ -32,6 +35,9 @@ jobs: name: Build and Release Linux runs-on: ${{ github.repository_owner == 'coder' && 'depot-ubuntu-22.04-16' || 'ubuntu-latest' }} steps: + - name: Checkout code + uses: actions/checkout@v4 + - uses: ./.github/actions/setup-cmux - name: Package and publish for Linux From 89651e687939c5cf6f99dc468b95cec428137e8d Mon Sep 17 00:00:00 2001 From: Ammar Date: Fri, 10 Oct 2025 14:53:13 -0500 Subject: [PATCH 6/7] Move build step out of composite action ImageMagick must be installed before building (for icon generation), so the build step needs to happen after platform-specific setup. --- .github/actions/setup-cmux/action.yml | 6 +----- .github/workflows/build.yml | 6 ++++++ .github/workflows/release.yml | 6 ++++++ 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/.github/actions/setup-cmux/action.yml b/.github/actions/setup-cmux/action.yml index ccbb48459..7ad43ee65 100644 --- a/.github/actions/setup-cmux/action.yml +++ b/.github/actions/setup-cmux/action.yml @@ -1,5 +1,5 @@ name: 'Setup cmux build environment' -description: 'Setup Bun, install dependencies, and build application' +description: 'Setup Bun and install dependencies' runs: using: "composite" steps: @@ -11,7 +11,3 @@ runs: - name: Install dependencies run: bun install --frozen-lockfile shell: bash - - - name: Build application - run: bun run build - shell: bash diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index cf4d16628..f23dec92f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -19,6 +19,9 @@ jobs: - name: Install ImageMagick run: brew install imagemagick + - name: Build application + run: bun run build + - name: Setup code signing run: ./scripts/setup-macos-signing.sh env: @@ -59,6 +62,9 @@ jobs: - name: Install ImageMagick run: sudo apt-get update && sudo apt-get install -y imagemagick + - name: Build application + run: bun run build + - name: Package for Linux run: make dist-linux diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 675c9bf26..cfee3c95e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -17,6 +17,9 @@ jobs: - uses: ./.github/actions/setup-cmux + - name: Build application + run: bun run build + - name: Setup code signing run: ./scripts/setup-macos-signing.sh env: @@ -40,6 +43,9 @@ jobs: - uses: ./.github/actions/setup-cmux + - name: Build application + run: bun run build + - name: Package and publish for Linux run: bun x electron-builder --linux --publish always env: From 92b85096a80d1735c4d956cc3c7a9a92bdee7589 Mon Sep 17 00:00:00 2001 From: Ammar Date: Fri, 10 Oct 2025 14:56:04 -0500 Subject: [PATCH 7/7] Add ImageMagick to release workflow Icons are generated during build, so ImageMagick must be installed before building in both CI and release workflows. --- .github/workflows/release.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cfee3c95e..921870f21 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -17,6 +17,9 @@ jobs: - uses: ./.github/actions/setup-cmux + - name: Install ImageMagick + run: brew install imagemagick + - name: Build application run: bun run build @@ -43,6 +46,9 @@ jobs: - uses: ./.github/actions/setup-cmux + - name: Install ImageMagick + run: sudo apt-get update && sudo apt-get install -y imagemagick + - name: Build application run: bun run build