Mobile Banking CI/CD in Africa
The Challenge
Shipping a mobile banking app is hard. Shipping the same app across 9 African countries — each with unique regulatory requirements, app store configurations, provisioning profiles, and security tooling — is a different beast entirely.
When I joined this project, the team was manually building each country variant. A single release cycle took days of engineer time, and signing errors were a weekly occurrence.
The Architecture
We designed a parameterised Jenkins pipeline that treats each country as a configuration profile rather than a separate build. The core pipeline stages:
Key Decisions
Why Jenkins over GitHub Actions? The bank's infrastructure team required on-premise build agents for security compliance. Jenkins gave us full control over the Mac mini fleet used for iOS builds.
Shared vs. separate pipelines? We considered a mono-pipeline per country but rejected it — the maintenance burden would scale linearly. A single parameterised pipeline means bug fixes and improvements apply everywhere.
Arxan integration was the hardest piece. The protection tool modifies the compiled binary, so it must run after the .NET MAUI build but before signing. We built a wrapper script that handles blueprint selection, retry logic for flaky Arxan processes, and verification of protected binaries.
Results
Lessons Learned
If you're building multi-market mobile apps in Africa and struggling with CI/CD complexity, I'd love to chat. Reach out via the contact form or book a consultation.