CLI
The Semaloop CLI pushes iOS and Android builds to Semaloop from your terminal or any CI system. It is in early access, so get in touch if you’d like to use it.
Install
Section titled “Install”Download the latest binary for your platform from the releases page. On macOS you can also use Homebrew:
brew tap semaloop/tapbrew install semaloopAuthenticate
Section titled “Authenticate”Create an API key in Settings → API keys, then either set it as the
SEMALOOP_API_KEY environment variable or run semaloop auth login. A key is
scoped to one app. See API keys.
Push a build
Section titled “Push a build”semaloop build push build/YourApp.appsemaloop build push accepts an .app or .ipa for iOS, or a standalone
.apk for Android. App bundles (.aab), XAPK or APK-set containers, and
split APKs aren’t accepted. See
exporting an APK from an app bundle.
Pass --git-repo, --git-commit and --git-ref together to let Semaloop
report the results as checks on your pull request. This needs your repository
to be connected under Settings → GitHub integration. See the
GitHub integration.
In GitHub Actions you can use the semaloop/cli/actions/build-push action
instead, which fills in the git details for you. The full command reference is
in the CLI repository.
Bitrise
Section titled “Bitrise”On Bitrise, add the
Semaloop step
to your workflow instead of installing the CLI. Add your API key to your
project’s secrets as SEMALOOP_API_KEY, then add the step after the one that
builds your app, usually xcode-archive. For a device build (.ipa):
- git::https://github.com/semaloop/bitrise-step-semaloop-submit-build.git@main: title: Submit build to Semaloop inputs: - api_key: "$SEMALOOP_API_KEY" - ipa_path: "$BITRISE_IPA_PATH"For a simulator build (.app):
- git::https://github.com/semaloop/bitrise-step-semaloop-submit-build.git@main: title: Submit build to Semaloop inputs: - api_key: "$SEMALOOP_API_KEY" - test_bundle_path: "$BITRISE_TEST_BUNDLE_PATH"On any other CI system, such as Codemagic or Azure DevOps, download the CLI
binary in your pipeline and run semaloop build push.
Running selected tests from CI
Section titled “Running selected tests from CI”By default, every active test runs on each build you push. To choose which tests run from your own pipeline instead, for example only the tests a pull request touches:
- In Settings → Test runs, set the uploads channel to Don’t run tests automatically.
- Push the build.
semaloop build pushreturns the new build’s ID, and the GitHub Action exposes it assteps.<step id>.outputs.build-id. - Connect to the MCP server with an API key
and call
tests_listto get your tests. - Call
test_runs_triggerwith yourappId, thebuildId, and either thetestIdsto run or atag.
A coding agent can do steps 3 and 4 for you, for example by comparing the pull request’s diff with your tests and picking the ones it affects.
The same call works from a scheduled job, for a test that has to run at a
particular time of day, such as checking how your app behaves just after
midnight in another time zone. Call test_runs_trigger with the latest
build’s ID from builds_list.