Bitrise Overview - rajparad/firefox-ios GitHub Wiki

General information

Bitrise is a CI and CD for mobile apps. It is easy to set up and comes with nice features for testing purposes. It allows running tests on both simulator and real devices. The real device testing can be done using Firebase test lab or your own device. For simulators and Firebase test lab devices it is possible to configure the tests to run in parallel.

In general everything is well documented in Bitrise documentation site. As a high level summary, the way Bitrise is configured is by defining Workflows and Steps into each Workflow to execute the desired tasks. One app may have more than one Workflow. There is the possibility to define triggers to launch each Workflow. Also, the Steps for each Workflow can be launched or not depending on certain conditions defined. There are some Steps already defined, easy to use just by adding them from the Workflow editor. But, you can always add a step as a script, and so you can configure it as you want. Predefined steps can be modified too.

Tests results can be seen under Artifacts or Devices tab depending on where the tests run. If regular tests run on the simulator on a real device, they run as part of Bitrise and tests are shown under Devices.

screen shot 2019-01-23 at 18 34 22

If tests run in parallel on simulator or real devices the results are shown as an HTML file under Artifacts tab.

screen shot 2019-01-23 at 18 33 34

Current configuration

There are different workflows running on different events. On push or PR events we are using the new pipelines feature on Bitrise. With this configuration we build the app and then run the unit tests and UI smoke test in parallel. For more details about this configuration look at the bitrise.yml file.

Tests executions can be seen going to the general dashboard or visiting the Slack channel #firefox-ios-alerts where every time a build finishes there is a notification with the status.

Scheduled builds

There are also scheduled build that run on different days. For example, the RunAllXCUITests workflow for iPhone and iPad. And the RunSmokeXCUITestiPad. In addition to those pipelines/workflows, there are these builds that we use for our screenshots tool.

L10nBuild

Build that manages the L10nScreenshotsTest workflows

L10nScreenshotsTest

This workflow runs the screenshots test to get the screenshots for each locale. The builds that run these workflows are triggered and managed by Taskcluster. Thanks to it the work to run the screenshots is split into different builds. Each build runs the tests for 6 locales and report them back to Task cluster.