Mobile builds & releases
DPS builds your iOS and Android app in your own GitHub repository’s Actions, keeps the signed binaries, and publishes them to Google Play, TestFlight / the App Store and Firebase App Distribution.
The work splits into three layers:
- Build — a GitHub Actions workflow DPS writes into your repo (
dps-build.yml) runs the build: macOS for iOS, Ubuntu for Android. - Artifacts — the
.ipa/.apk/.aabit produces is uploaded to DPS with its size and SHA-256. - Releases — DPS publishes a build to the store channels you have set up.
Set up a mobile app
- Create a React Native app in a project and connect its GitHub repository on the Source tab (through the DPS GitHub App).
- Make the repo compatible. DPS commits two files to it:
.dps/config.json— the build type (expo,bareorflutter), the build command for each platform and profile (production,preview), and where each build leaves its artifact. Its JSON Schema is api.duabaforge.com/schemas/dps-config.schema.json , which editors pick up from the file’s$schema;.github/workflows/dps-build.yml— marked “Managed by DPS — do not edit by hand”. DPS updates it when the workflow changes.
- Set up signing and publishing on the Publish Setup tab (Google Play, TestFlight, Firebase): the Apple distribution certificate and provisioning profile, the Android keystore (upload one or let DPS generate it), and the store connections.
- Create a deploy token under Account settings → Deploy tokens. Scope it to this
app and give it at least
build:trigger(the workflow needs it to fetch your signing credentials — they are refused to tokens not scoped to one app) andartifact:upload. Save it in the repository as the secretDPS_TOKEN.
A repository has two modes:
| Mode | Files in the repo | What you get |
|---|---|---|
| managed | package.json, .dps/config.json, .github/workflows/dps-build.yml | Builds started from the dashboard, run in your repo’s Actions |
| artifact-only | none of them | Upload builds yourself (below); releases and publishing still work |
The Source tab shows which mode a repo is in and can re-check it.
Build
Start a build on the Build tab: choose the platform and profile. DPS commits
.dps/build-trigger.json to the repo, which starts dps-build.yml. The workflow:
- reads the trigger, picks the runner and checks out your code;
- fetches the signing credentials from DPS with
DPS_TOKEN; - runs the build command from
.dps/config.json; - uploads the artifact to DPS (and, for Android, the R8 mapping file if the build is minified);
- reports progress back to DPS, signed with a per-build secret, so the build’s status updates live in the dashboard.
Uploading from other CI
From any other CI system, upload a build with the composite action
duabalabs/dps-workflows/actions/upload@v1:
- uses: duabalabs/dps-workflows/actions/upload@v1
with:
token: ${{ secrets.DPS_TOKEN }}
api-url: https://api.duabaforge.com
app-id: <appId>
artifact: ./build/app.aab
platform: android…or call the REST endpoints directly with the token: POST /api/v1/artifacts/upload-url,
PUT the file to the returned URL, then POST /api/v1/artifacts/{id}/finalize (see the
API reference). The token needs artifact:upload.
Releases & publishing
Publish a build from the Build tab to the channels you set up:
- Google Play — upload to a track, promote between tracks, and edit the store listing;
- TestFlight / App Store — upload to TestFlight, manage tester groups, and edit the App Store listing;
- Firebase App Distribution — send a build to testers.
Releases can also be created, published and rolled back through the REST API with a token
that has the release:* scopes.
Dashboard tabs
| Tab | Purpose |
|---|---|
| Source | Repository connection and compatibility (mode, detected files, make compatible) |
| Server | The Server App the mobile app talks to; DPS writes its Parse values into each build |
| Build | Start builds, follow them, and publish a finished build |
| Environment / Releases | Build-time variables; release history |
| Publish Setup | Signing credentials and the Google Play, TestFlight and Firebase connections |
| Crashes / Notifications | Crash reports and push notifications |
| Settings | General, iOS and Android app settings |
Related
- API reference — the REST endpoints under
/api/v1.