The Swift project follows an incremental development model, and utilizes continuous integration (CI) testing of changes in pull requests before merging as a core tool for maintaining project stability. The system produces the snapshot builds posted on swift.org, and runs tests against active branches. It is also used as part of the review process to run tests against pull requests before committing them.
Our continuous integration system is powered by Jenkins and currently supports building and testing on Mac OS X, Ubuntu 14.04, and Ubuntu 15.10. Testing on the iOS simulator is also supported.
Currently, there are 15 OS X nodes, running Mac OS X 10.11.1 (15B42), and building with Xcode 7.2 GM. There are also 2 Linux nodes, running Ubuntu 14.04, and Ubuntu 15.10.
Continuous integration jobs are organized within the CI system in the following categories:
|Swift Incremental||OS X
|LLDB Incremental||OS X
|Swift (Tools Opts+Assert, Stdlib DebugInfo+Assert, Test Simulator)||OSX||Clean|
|Swift (Tools Opts+Assert, Stdlib Opt+DebugInfo+Assert, Test Simulator)||OSX||Clean|
|Swift (Tools Opts+Assert, Stdlib Opt+DebugInfo, Test Simulator)||OSX||Clean|
The build script command is listed in the description for each job. Most build script commands use a build system preset in the command which contains further build and test settings. Documentation of the presets is contained in the build script source.
There are several ways in which you can interact with the swift.org CI system:
When a change is reviewed on a pull request, a member of the Swift team will trigger testing by the CI system. Tests can be triggered to run on Mac OS X, Linux, or both platforms.
Testing status is then posted inline with the pull request, showing that a test is in progress. You can click the “details” link to go directly to the status page for the test in progress.
When tests complete, that result is also updated in the pull request
If there are issues found during testing, you will get a link to the details of the failure.
It is expected that changes meet the quality standards for the Swift project before they are committed to the development branch, and you are responsible for fixing problems found by your changes. If your changes break builds or tests on the development or release branches, you will receive email notification.
The Swift project welcomes proposals from the community for adding support for other configurations.