Skip to content

CI/CD

Zequel uses two GitHub Actions workflows for continuous integration and releases.

CI Workflow

File: .github/workflows/ci.yml

Runs on every push to main and on every pull request targeting main. Uses concurrency groups to cancel in-progress runs when a new commit is pushed.

Matrix

RunnerOS
macos-latestmacOS
windows-latestWindows
ubuntu-latestUbuntu

Steps

  1. Checkout the repository.
  2. Setup Node.js 20 with npm caching.
  3. Install dependencies (npm ci).
  4. Typecheck (npm run typecheck).
  5. Unit tests (npm run test:unit).

All steps run on every matrix OS to catch platform-specific issues early.

Release Workflow

File: .github/workflows/release.yml

Triggered when a tag matching v*.*.* is pushed. Runs three parallel jobs that build platform-specific installers and publish them to GitHub Releases.

Jobs

JobRunnerOutput
release-macmacos-latestDMG for Intel (x64) and Apple Silicon (arm64)
release-windowswindows-latestNSIS installer (x64)
release-linuxubuntu-latestAppImage (x64 + arm64)

macOS Job Steps

  1. Checkout.
  2. Setup Node.js 20.
  3. Install dependencies (npm ci).
  4. Typecheck (npm run typecheck).
  5. Unit tests (npm run test:unit).
  6. Build and publish (npm run build && npx electron-builder --mac --x64 --arm64 --publish always).

Typecheck and unit tests run only in the macOS job to avoid redundant CI time.

Windows Job Steps

  1. Checkout.
  2. Setup Node.js 20.
  3. Install dependencies (npm ci).
  4. Build and publish (npm run build && npx electron-builder --win --x64 --publish always).

Linux Job Steps

  1. Checkout.
  2. Setup Node.js 20.
  3. Install dependencies (npm ci).
  4. Build and publish (npm run build && npx electron-builder --linux --x64 --arm64 --publish always).

Secrets

SecretPurpose
GITHUB_TOKENAutomatically provided; used to publish release assets
CSC_LINKmacOS code signing certificate (base64 .p12)
CSC_KEY_PASSWORDmacOS certificate password
WIN_CSC_LINKWindows code signing certificate (optional)
WIN_CSC_KEY_PASSWORDWindows certificate password (optional)

See Releasing for the full release process and what users see.

Released under the Elastic License 2.0.