environment to cloud, but not sure where to start? Interested in speeding up builds and tests for mobile development? CircleCI has you covered! In this workshop, we’ll cover the basics of how mobile CI/CD projects work on CircleCI, how to migrate from on-prem to the cloud and discuss some of the pipeline optimizations you can use to increase your build speed and efficiency. Who will benefit from this workshop: • DevOps engineers curious about mobile CI/CD • Mobile developers interested in speeding up their builds and tests
rate is important for success • Continuous quality improvements for various devices Important to provide and improve features quickly and continuously CI/CD(Continuous Integration/Continuous Delivery) is essential
Mac for iOS builds) ◦ Requires machines with high specs ◦ Provision and maintain Mac hardware ▪ Buy your own, or use cloud providers with limitations ◦ Regularly updating macOS and Xcode CI/CD is not yet implemented Managing on-prem environments(e.g Jenkins)
from a vast fleet of executor types: Docker, Linux VM, macOS. All offer a range of CPUs, GPUs, memory, and images to customize each jobs Test splitting Shorten the feedback loop by automatically splitting your tests across parallel instances of the same job SSH debugging Securely access any job on CircleCI to debug builds and tests in real-time iOS Simulators Android Emulators Tests can run on them, including Xcode UITest(XCUITest), Espresso, and a snapshot test Orb(Integrations) Reusable snippets of code that help automate repeated process and speed up project setup Insights dashboard Insights allow team to improve engineering productivity
Xcode) Mac environment • CircleCI provides Apple Silicon Mac(M1 Mac) from 2023 Up to 2x faster build speed than Intel Mac • Not guaranteed in SLA, but we aim to support a new Xcode within a couple of days. ◦ https://circleci.com/docs/xcode-policy/ 1. Powerful resource classes for mobile CI/CD(Mac) Intel Mac M1(Apple Silicon) Mac
simulator can run on a macOS VM • The x86 Android emulator can run on an Android VM • Tests can run on iOS Simulators / Android emulators, including Xcode UITest (XCUITest), Espresso, and snapshot tests • Booting and testing can be conducted in a clean environment every time
for tests to run is time not spent writing the next piece of code, not to mention the cost of waiting around and losing context on what they’re working on. Fast feedback is everything.” - Rob Zuber One of the easiest ways to speed up builds on CircleCI is with test splitting. Particularly, splitting tests by timing data.The CircleCI test splitting mechanism takes in a list of tests and splits those tests across the number of nodes defined by the parallelism key.
problems is to securely debug problems within the job environment - while it’s running. Without SSH access to the build environment, a developer has to try to replicate the CI/CD environment in their dev environment in order to accurately identify the issue, then attempt to resolve it using only application, stack trace, and system logs. These types of situations are a huge waste of time for developers and SRE teams.
from a vast fleet of executor types: Docker, Linux VM, macOS. All offer a range of CPUs, GPUs, memory, and images to customize each jobs Test splitting Shorten the feedback loop by automatically splitting your tests across parallel instances of the same job SSH debugging Securely access any job on CircleCI to debug builds and tests in real-time iOS Simulators Android Emulators Tests can run on them, including Xcode UITest(XCUITest), Espresso, and a snapshot test Orb(Integrations) Reusable snippets of code that help automate repeated process and speed up project setup Insights dashboard Insights allow team to improve engineering productivity
Linux VM) • Orbs ◦ Android Orb (Gradle cache) ◦ Ruby Orb (fastlane installation) • Espresso test running on the Android emulator & Test splitting • Distributed on Firebase App Distribution • Insights dashboards and SSH debugging
Mac VM) • Orbs ◦ Ruby Orb (fastlane installation) ◦ macOS Orb to preboot the iOS simulator • XCUITest by using the iOS simulator & Test splitting • Distributed on the fastlane match & Firebase App Distribution • Insights dashboards and SSH debugging
fastlane match for configuring iOS code signing on CircleCI. • https://circleci.com/docs/ja/2.0/ios-codesigning/ https://qiita.com/kotarella1110/items/840af2cf80aaea1fb035
try to build the perfect pipeline from the beginning – aim for “good enough” • Schedule time for retrospectives and continuous learning • Migrate pipeline steps in the following order: ◦ Build & Unit tests ◦ Integration tests ◦ Debug distribution ◦ Release distribution
mobile development with high release frequency • Mobile CI/CD tends to be a challenge in terms of build machines to run(especially Mac) • CircleCI provides maintenance-free and on-demand machines required for mobile CI/CD, including Mac • CircleCI provides strong features to increase your build speed and efficiency of your mobile CI/CD
from a vast fleet of executor types: Docker, Linux VM, macOS. All offer a range of CPUs, GPUs, memory, and images to customize each jobs Test splitting Shorten the feedback loop by automatically splitting your tests across parallel instances of the same job SSH debugging Securely access any job on CircleCI to debug builds and tests in real-time iOS Simulators Android Emulators Tests can run on them, including Xcode UITest(XCUITest), Espresso, and a snapshot test Orb(Integrations) Reusable snippets of code that help automate repeated process and speed up project setup Insights dashboard Insights allow team to improve engineering productivity