HealkiteDocs

GitHub Action & CI

Store HEALKITE_TOKEN (an access key from API & MCP, Developer role) and HEALKITE_SIGNING_KEY (your PEM) as repository secrets.

Release on merge

yaml
on: { push: { branches: [main] } }
jobs:
  ota:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: 22 }
      - run: npm ci
      - uses: saif-09/healkite-action@v1
        with:
          api-url: https://api.healkite.com
          token: ${{ secrets.HEALKITE_TOKEN }}
          signing-key: ${{ secrets.HEALKITE_SIGNING_KEY }}
          channel: production-xxxxxxxx
          platform: android
          runtime-version: "1.0.0"
          guarded: "true"
          max-growth: "10"

Bundle size check on pull requests

yaml
      - uses: saif-09/healkite-action@v1
        with:
          mode: size-check
          api-url: https://api.healkite.com
          token: ${{ secrets.HEALKITE_TOKEN }}   # Viewer role is enough
          channel: production-xxxxxxxx
          platform: android
          runtime-version: "1.0.0"
          max-growth: "10"

PR previews

yaml
on:
  pull_request: { types: [opened, synchronize, reopened, closed] }
permissions: { pull-requests: write, contents: read }
jobs:
  preview:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: 22 }
      - run: npm ci
        if: github.event.action != 'closed'
      - uses: saif-09/healkite-action@v1
        with:
          mode: ${{ github.event.action == 'closed' && 'preview-close' || 'preview' }}
          api-url: https://api.healkite.com
          token: ${{ secrets.HEALKITE_TOKEN }}
          signing-key: ${{ secrets.HEALKITE_SIGNING_KEY }}
          channel: production-xxxxxxxx
          platform: android
          runtime-version: "1.0.0"

Inputs

Input
moderelease (default), size-check, preview, preview-close
api-url, token, channel, platform, runtime-versionRequired
signing-keyPEM of your signing key (secret)
guarded"true" for a guarded rollout
descriptionRelease notes
starts-at, ends-atSchedule a release or campaign
max-size, max-growthSize budgets (2MB, 10)
preview-nameDefault pr-<number>
projectProject directory (default .)

Other CI systems

The CLI has no dependencies beyond Node:

sh
export HEALKITE_API_URL=https://api.healkite.com HEALKITE_TOKEN=…   # env wins over ~/.healkite/config.json
HEALKITE_SIGNING_KEY="$SIGNING_PEM" npx healkite release -p ios -c "$CHANNEL" -r 1.0.0 --guarded