Engineering

Mobile DevSecOps

Otukan makes mobile app protection a repeatable CI/CD step: it runs on every release build, keeps keys with you and fails the job when protection fails.

  • Android
  • iOS
  • Flutter
  • React Native
  • A step, not a project

    Otukan runs on every release build in your CI/CD pipeline, the same way each time, with no manual stage in between.

  • Credentials stay put

    Signing keys and store credentials stay in your CI secret store or signing service. Otukan's protection step never needs them.

  • Failures stop releases

    If protection does not complete, the job fails and the build stops there. You decide in advance who can override.

Built for your pipeline

Protection that behaves like any other well-run build step.

  • Fits your CI/CD

    The Otukan step fits the CI/CD system you already use. iOS jobs run on a macOS runner with Xcode, as your iOS builds do today.

  • Fails the job, not silently

    A failed or partial protection returns a failing exit code, so a build without its protection stops before signing and release.

  • Traceable artefacts

    Every protected build records the commit, toolchain and protection profile version behind it, with logs you keep.

  • Crash reporting intact

    R8 mapping files, native debug symbols and dSYMs stay usable, so crashes in protected builds remain readable.

How a protected release flows

  1. Build and protect

    Your pipeline builds the release variant and the Otukan step applies the approved protection profile.

  2. Sign

    Your pipeline signs with your release identity, using keys that never leave your environment.

  3. Test the real build

    The signed, protected artefact runs through regression and sensitive-flow tests on physical devices.

  4. Release in stages

    Upload to the store and roll out through a staged or phased release.

  5. Monitor

    Watch crash, ANR or hang rates and runtime signals for the new version.

Protection becomes repeatable when it is a pipeline step like compiling or signing, and that is how Otukan runs. The Otukan step runs on every release build in the CI/CD system you already use: it applies the approved protection profile as part of producing each release artefact, keeps logs of what it did, and fails the job when protection does not complete. Your team keeps signing credentials and the release decision. This page maps where protection sits among build, test, signing and release; who owns credentials, artefacts and failure decisions; and how Otukan’s automation behaves, including rollback. Android and iOS pipelines differ, so each platform is planned on its own.

Pipeline stages

A protected mobile release passes through the same stages on every run.

  1. Build and protect. Compile the release variant from a tagged commit with a pinned toolchain: Gradle and the Android Gradle Plugin for Android, Xcode for iOS, and your framework’s SDK. The Otukan step applies the protection profile for this platform and stores the profile version with the build.
  2. Scan. Run static analysis and dependency checks on source and packages.
  3. Sign. Sign with your release identity: your upload key for Google Play, or your Apple distribution certificate and provisioning profile for iOS.
  4. Test. Install the protected, signed artefact on physical devices and run the regression and sensitive-flow tests.
  5. Release. Upload to the store and roll out in stages.
  6. Monitor. Watch crash, ANR or hang rates and Otukan’s runtime signals for the new version.
StageAndroid specificsiOS specifics
BuildApp bundle, R8 mapping file and native debug symbolsXcode archive and dSYM files
SignUpload key; Google re-signs with Play App SigningDistribution certificate; Apple re-signs App Store builds
TestInternal testing track on Google PlayTestFlight
ReleaseStaged rollout on Google PlayPhased release on the App Store

For signing detail, see app signing security. Protected-build testing is covered on protected mobile app testing.

Ownership

Automation does not remove decisions; it makes them happen at a fixed point. Otukan’s engineers settle these with you before the first automated protected release.

ItemWhat is decidedTypical owner
Signing keys and certificatesWhere they live, who can use them, how they rotateRelease owner
Store and CI credentialsScoped to the jobs that need them, stored in the CI secret storePlatform or DevOps team
Protection profileWhich controls apply, per platform, and who approves changesSecurity and product owners, with Otukan
Build artefactsRetention of protected artefacts, mapping files, dSYMs and logs per releaseMobile team
Failure decisionsWhether a failed protection step or test blocks the release, and who can overrideRelease owner, agreed with security

Two rules keep this simple, and Otukan is built around both. The protection step never needs signing keys or store credentials. And every protected artefact is traceable to a commit, a toolchain version and a protection profile version, so any build can be explained later.

Automation you can rely on

A protection step earns its place in CI by behaving predictably. Otukan’s step does.

How the Otukan step behaves

  • Defined outputs. Each run produces the protected artefact and its logs, stored where your pipeline keeps its artefacts.
  • Honest exit codes. A failed or partial protection fails the job. It never passes with a warning.
  • Reproducible output. The same inputs and profile produce an equivalent protected artefact.
  • Readable crashes. R8 mapping files, native debug symbols and dSYMs stay usable for crash reporting.
  • Your code stays yours. The step does not send your code or artefacts anywhere you have not agreed.
  • Your runners. It fits the CI/CD system you already use; iOS jobs run on a macOS runner with Xcode.

Rollback behaviour

Stores do not roll back a binary. Halt the Google Play staged rollout or pause the App Store phased release, then ship a fixed build with a higher version number through the same pipeline. Because every protected build carries its profile version and logs, the last known good build is on hand, and the fix goes out with the same protection. Where your design allows it, a control’s response can be relaxed from your server without a new release. Gated handoffs, pinned versions and planned rollback are covered on how Otukan runs the protection lifecycle.

For the implementation side, see the mobile DevSecOps implementation guide. For how the pipeline fits the wider protection model, return to mobile app security.

Common questions

  • Where in the pipeline does Otukan run?

    Protection is part of producing the release artefact, before signing for distribution. Tests then run on the protected, signed artefact, because that is what users install. Otukan's engineers map the exact position with you for each platform you ship, since Android and iOS build, sign and upload differently.

  • Does Otukan work with our CI system?

    The Otukan step fits the CI/CD system you already use. It needs a runner with the right operating system, network access to anything it calls and a clear exit code, which CI systems generally provide. iOS archiving and signing need a macOS runner with Xcode. Tell us your CI system and we confirm the setup with you.

  • What if the protection step fails during an urgent fix?

    Decide this in advance. The safe default is to block the release and fix the step, and Otukan's failing exit code makes that the natural path. If an override is allowed, name who may approve it, record the decision, and ship a protected build as the next release.

Make protection part of every release

Tell us your CI system, platforms, frameworks and how you sign and release today. We do not ask for binaries, signing keys, CI secrets or production credentials.

Or request a technical demo