blob: 5a350e2f38ba1031847104f0d929da2d7e1c82a5 [file] [log] [blame] [view]
michaeldo8cccf2142017-03-06 22:12:021# Continuous build and test infrastructure for Chromium for iOS
2
3See the [instructions] for how to check out and build Chromium for iOS.
4
5The Chromium projects use buildbot for continuous integration. This doc starts
6with an overview of the system, then gives detailed explanations about each
7part.
8
9[TOC]
10
11## Overview
12
13Commits are made using the [commit queue], which triggers a series of try jobs
14to compile and test the proposed patch against Chromium tip of tree before
15actually making the commit. If the try jobs succeed the patch is committed. A
16newly committed change triggers the builders (or "bots") to compile and test
17the change again.
18
19## Bots
20
21Bots are slaves attached to a buildbot master (or "waterfall"). A buildbot
22master is a server which polls for commits to a repository and triggers workers
23to compile and test new commits whenever they are detected. [chromium.mac] is
24the main waterfall for Mac desktop and iOS. [tryserver.chromium.mac] serves
25as the try server for Mac desktop and iOS.
26
27The bots know how to check out a given revision of Chromium, compile, and test.
28
29### Code location
30
31#### Master configs
32
33The masters are configured in [tools/build], a separate repository which
34contains various infra-related scripts.
35
36#### Pollers
37
38[chromium.mac] uses a `GitilesPoller` which polls the Chromium repository for
39new commits using the [gitiles] interface. When a new commit is detected, the
40bots are triggered.
41
42#### Recipes
43
44The bots run [recipes], which are scripts that specify their sequence of steps
45located in [tools/build]. An iOS-specific [recipe module] contains common
46functionality that the various [iOS recipes] use.
47
48#### Configs
49
50Because the recipes live in another repository, changes to the recipes don't
51go through the Chromium [commit queue] and aren't tested on the [try server].
52In order to allow bot changes to be tested by the commit queue, the recipes
53for iOS are generic instead of bot-specific, and rely on configuration files
54which live in master-specific JSON config files located in [src/ios/build/bots].
55These configs define the `gn_args` to use during compilation as well as the
56tests to run.
57
58#### Scripts
59
60The [test runner] is the script which installs and runs the tests, interprets
61the results, and collects any files emitted by the test ("test data"). It can
62be found in [src/ios/build/bots/scripts], which means changes to the test runner
63can be tested on the [try server].
64
65### Compiling with goma
66
67Goma is the distributed build system used by Chromium. It reduces compilation
68time by avoiding recompilation of objects which have already been compiled
69elsewhere.
70
71### Testing with swarming
72
73Tests run on [swarming], a distributed test system used by Chromium. After
74compilation, configured tests will be zipped up along with their necessary
75dependencies ("isolated") and sent to the [swarming server] for execution. The
76server issues tasks to its attached workers for execution. The bots themselves