Automate with CI

Publish an update on every merge.

GitHub Actions

yaml
# .github/workflows/ota.yml
name: OTA update
on:
  push:
    branches: [main]
jobs:
  publish:
    runs-on: ubuntu-latest
    strategy:
      matrix: { platform: [android, ios] }
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: 20, cache: npm }
      - run: npm ci
      - run: >
          npx fireota publish --app ${{ vars.FIREOTA_APP_ID }} --platform ${{ matrix.platform }}
          --version 1.3.${{ github.run_number }} --runtime 1.3.0 --channel beta --rollout 100
        env:
          FIREOTA_URL: ${{ vars.FIREOTA_URL }}
          FIREOTA_API_KEY: ${{ secrets.FIREOTA_API_KEY }}

Safe retries

The CLI sends an idempotency key derived from the release inputs, so a retried job never creates a duplicate release.