Continuous integration

Run releases and patches from any CI. This page covers what every provider needs; the provider pages have ready-to-use files.

Publishing from CI is part of Pro and up. On Hobby, run releases and patches from a logged-in computer.

1. Get a token

On a computer where the project already works (you ran overpush init there), run:

$ overpush token

It prints two values. Add both as secrets in your CI:

SecretWhat it is
OVERPUSH_TOKENLets CI publish for this app. Treat it like a password.
OVERPUSH_API_BASEThe OverPush server address.

The token is its own key. It shows as a CI key under Connected projects in the app's settings in the console. Remove it there to stop CI; logging out on your computer does not affect it.

2. Pick a runner

AndroidAny runner: Linux, Windows or macOS.
iOSA macOS runner with Xcode, set up for code signing as you would for flutter build ipa.

Use the same Flutter version as the release you patch. See Flutter versions.

3. Install the CLI

$ curl -fsSL https://overpush.in/install.sh | bash

Then call it as ~/.overpush/bin/overpush, or add that folder to the job's PATH.

> irm https://overpush.in/install.ps1 | iex

Then call it as $env:USERPROFILE\.overpush\bin\overpush.exe.

4. Run commands without prompts

Every command that asks for confirmation accepts --yes. If no valid token is set, the CLI stops with a clear error instead of waiting for a browser.

$ overpush release android --yes
$ overpush patch android --yes --rollout-percent 10
$ overpush release ios --yes
$ overpush patch ios --yes --rollout-percent 10

Patching from a fresh runner

A runner usually starts empty, without the files from the release build. You don't need to copy them: overpush release keeps them on the OverPush server, and overpush patch downloads them when they're missing.

A runner with no releases of its own patches the newest release.

Providers

GitHub ActionsWorkflows for Android and iOS patches. CodemagicA codemagic.yaml for patches.