In this talk at iOSoho meetup, we covered some of the tools available to properly do Continuous Integration and Continuous Delivery for an iOS App. And practical steps to take while creating your CI/CD pipeline for your iOS App.
for more than 8 years. • Currently Software Engineer @ iCIMS Mobile Team. • iCIMS develops Talent Acquisition Software. Such as Application Tracking System and Candidate Relationship Management. • Some of our customers: Microsoft, Amazon, Sony Music, and many more. • Company HQ is in Central New Jersey. Currently hiring for lots of positions. • We started our CI/CD journey last year. And we still have improvements to make. Who am I?
is a development practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early. • By integrating regularly, you can detect errors quickly, and locate them more easily. • Continuous Delivery (CD) is a software engineering approach in which teams produce software in short cycles, ensuring that the software can be reliably released at any time. What is CI and CD?
repetitive work. Let humans do creative work. • iOS Specific: App Store uploads are a pain. Why have a developer do all retry logic every time • Transparency: Everybody is informed in real time of what is going on. • When features get merged • When build is uploaded for testing • When app is released • Quality gate scans results • Test build results Benefits
to have everything integrated AND AUTOMATED. • Ideally: development branch should be releasable all the time. • Ask yourself: what does it look like when everything is integrated and automated for your workflow. • Example: • PR -> Build. Reviewers know for a fact, it passes all tests. Unit, integration, e2e. • Merge to develop -> Run all tests -> bump build number -> upload to TestFlight -> git tag • Merge to master -> Submit app for release to App Store • Things to consider: • Have a well-defined development process. Having CI/CD will make it obvious where you’re lacking. • Have a clear way of versioning. Now it’s going to be even more important. Vision
for build, testing and deploying iOS and Android apps. • Try to keep as much as possible in Fastlane; to be able to migrate across CI servers. • Leverage other Fastlane tools such as screenshots and provisioning profile management. • SCM: bitbucket Cloud vs Server, gitlab • CI Server: Jenkins, Circle-CI, Travis-CI, Azure devops. • Integration between SCM and CI Server. • If using Jenkins, setup slave node on a mac computer. Or use a cloud provider. This can be a tedious process. • Using cloud providers makes integration easier. But some people don’t have a choice.
Fastlane - Configure fastlane/Fastfile - Lanes: build and test, beta, release. - Setup and configure CI Server. - Setup Integration with SCM - Configure Hooks - Sync back with SCM utility to support merge locks. - Gotchas: - Very iterative process. - Requires a lot of back and forth with trial and error
advanced workflows. • Health checks • Check that app is in the app store. • Download app and conduct UI tests in production. • Static Code Analysis Tools • Sonar Qube • Create dashboards to have an overview across all your projects.