Engineering

Build and release integration

How to evaluate build and release integration for mobile app protection: what the step may access, where it sits in the sequence, how it fails and rolls back.

  • Android
  • iOS
  • Flutter
  • React Native
  • Least privilege by design

    The Otukan step works without signing keys or store credentials, so the job that protects your app cannot publish it.

  • A fixed place in the sequence

    Protection happens with the build, before your signing, testing and release gates, so every later check sees the protected app.

  • Failures you can see

    A protection run either completes and leaves a record, or fails the job, so an unprotected build never slips through silently.

What the Otukan step gives your pipeline

Four properties a security team can verify before approving the integration.

  • Scoped service identity

    The step runs under a pipeline identity you create, with only the rights it needs to read inputs and write its outputs.

  • Pinned inputs

    Each run records the source commit, toolchain and protection profile version it used, so outputs can be traced back.

  • Evidence per release

    Logs and the profile version are stored with each protected artefact, ready for release review and later audit.

  • Safe retries

    A retry applies the same pinned profile to the same inputs, so a runner fault does not change the protection you ship.

The protected release sequence

  1. Build and protect

    The release variant is built from a tagged commit, and the approved protection profile is applied.

  2. Sign with your identity

    Your release job signs the protected artefact with keys that never leave your control.

  3. Test on devices

    The signed, protected build runs your regression and sensitive-flow tests on physical devices.

  4. Record the evidence

    Test results join the protection logs and profile version for that release.

  5. Release in stages

    The build goes to the store through your usual staged or phased rollout.

Evaluate build and release integration by asking three questions of any protection step. What authority does it hold: which identity it runs as, what it can read and which secrets it touches? Where does it sit in the sequence relative to signing, testing and evidence? And how does it behave when something goes wrong: failure, retry, versioning and rollback? Otukan answers each one plainly. Protection runs as one scoped step inside the pipeline you already operate, for Android and iOS apps including Flutter and React Native, it never touches signing keys or store credentials, and it fails loudly.

Authority

A protection step handles your release build, so treat it like any privileged pipeline component. These are the checks worth making, and how Otukan meets each.

Question to askWhy it mattersOtukan’s answer
Which identity runs the step?Shared or personal credentials blur accountabilityA pipeline service identity you create and scope
What can it read?Broad access widens what a compromised job can reachThe release inputs for this build and the approved protection profile
What can it write?Write access to release channels lets a job publishIts protected artefact and logs, in your artefact store
Does it need secrets?Every secret in a job is a secret that can leakNo signing keys, certificates, provisioning profiles or store credentials
Where does data go?Code and artefacts are your intellectual propertyNowhere you have not agreed

Artefact inputs

Pin what goes in. Each Otukan run records the source commit, the toolchain and the protection profile version, so the protected artefact can be traced to exactly what produced it. On Android this sits next to your app bundle and R8 mapping file; on iOS, next to the Xcode archive and dSYM files.

Secret handling

Keep release secrets out of the protection stage entirely. Your signing identity lives with the signing job, and store credentials live with the release job. Because the Otukan step needs neither, a compromise of that stage cannot sign or publish a build.

Sequence

Order matters because each later stage should see the app your users will receive.

Protection before signing

Protection is applied together with the build. Signing follows, under your identity. On Android that means your upload key, with Google re-signing through Play App Signing, and Otukan’s integrity checks expect the certificate users actually receive. On iOS it means your distribution certificate and provisioning profile, with Apple re-signing App Store builds.

Testing the protected build

Test the build you will ship, not the unprotected one. Regression and sensitive-flow tests run on the signed, protected artefact on physical devices. For device test planning, see protected mobile app testing.

Evidence handoff

Test results join the protection logs and the profile version, forming one record per release. That record answers the auditor’s question of what was shipped and how it was protected. See release evidence and auditability for the full record.

Operations

Failures

A failed or partial protection fails the job. The pipeline stops before signing, so an unprotected build is not handed on by mistake. If your release owner needs an override, it is a recorded decision.

Retries

A retry applies the same pinned profile to the same recorded inputs, so a retry after a runner fault is safe and the protection you ship stays the same.

Versioning

Protection profiles carry versions like code. A profile change is reviewed, merged and applied to the next build, and each artefact names the version it used.

Toolchain and platform upgrades

A new Xcode, Android Gradle Plugin or framework release changes what goes into the build. Treat it like a profile change: run the protected pipeline on a branch, repeat the device tests and compare the evidence with the last release before merging. Otukan’s engineers work through these upgrades with your team, separately for each platform.

Rollback

Published binaries cannot be swapped back. Halt the rollout, fix forward with a higher version number, and rebuild from the last known good commit and profile if needed. The full path from pipeline access to planned rollback is set out on protection lifecycle. For signing detail, see app signing security.

Otukan’s engineers reproduce your pipeline with you before the first automated protected release, separately for Android and iOS. Return to mobile app security to see how integration fits the wider product.

Common questions

  • Does the protection step need our signing keys?

    No. Signing stays in your release job, under your identity, after protection has been applied. The Otukan step works without signing keys, certificates, provisioning profiles or store credentials, which keeps its permissions narrow and keeps the decision to publish with your team.

  • What happens if protection fails halfway through a release?

    The job fails and the pipeline stops before signing and release. Nothing is marked as protected unless protection finished. Your team reads the logs, fixes the cause or retries, and the release continues from a clean run. An override remains a documented decision for your release owner.

  • How do we roll back a protected release?

    Stores do not let you swap a published binary back. You halt the staged rollout on Google Play or pause the phased release on the App Store, then ship a fixed build with a higher version through the same pipeline. The previous protected artefact and its profile version are on record, so you can rebuild from a known good state.

Put protection on your release path

Tell us your platforms, frameworks, how your pipeline builds and signs releases today and who approves a release. We do not ask for signing keys, store credentials or pipeline secrets.

Or request a technical demo