|
| 1 | +<h2 id="ci">Continuous integration</h2> |
| 2 | + |
| 3 | +Continuous integration (CI) means mainly automatic testing for pull requests. |
| 4 | + |
| 5 | +### Travis CI |
| 6 | + |
| 7 | +In Mbed OS [Travis CI](https://travis-ci.org/ARMmbed/mbed-os) is used as primary automatic testing and checking run environment. |
| 8 | + |
| 9 | +Travis configuration is located in the [.travis.yml](https://github.com/ARMmbed/mbed-os/blob/master/.travis.yml) file in Mbed OS root directory. Mbed OS uses public travis so test results are publicly available and there are public [documentation available](https://docs.travis-ci.com/). |
| 10 | + |
| 11 | +#### Tests |
| 12 | + |
| 13 | +- **continuous-integration/travis-ci/pr** - Run other testing jobs. |
| 14 | +- **travis-ci/astyle** - Check code style using [astyle](http://astyle.sourceforge.net/). |
| 15 | +- **travis-ci/docs** - [Doxygen](http://www.doxygen.org/) and naming checks: |
| 16 | + - Assert that the Doxygen build produces no warnings. |
| 17 | + - Assert that all binary libraries are named correctly. |
| 18 | + - Assert that all assembler files are named correctly. |
| 19 | +- **travis-ci/events** - Check that Mbed OS compiles and run events tests. |
| 20 | +- **travis-ci/gitattributestest** - Check there are no changes after clone. This checks that `.gitattributes` is used correctly. |
| 21 | +- **travis-ci/licence_check** - Check there is no GPL licence text in the code. |
| 22 | +- **travis-ci/littlefs** - Test littlefs without embedded hardware. |
| 23 | +- **travis-ci/tools-py2.7** - Run Python tools tests with Python 2.7. |
| 24 | + |
| 25 | +### Jenkins |
| 26 | + |
| 27 | +We use [Jenkins](https://jenkins.io/) as an internal testing and checking environment. We execute tests that have special requirements for the execution enviroment in our internal Jenkins. In most cases, we publish test logs. |
| 28 | + |
| 29 | +How it works: |
| 30 | + |
| 31 | +- Jenkins uses a [scripted pipeline syntax](https://jenkins.io/doc/book/pipeline/). |
| 32 | +- Jenkins scripts are not publicly available. There is a Jenkinsfile in the Mbed OS root folder, but that is just a trigger for tests. |
| 33 | +- Jenkins selects required tests dynamically based on the code changes. For example, no tests execute if only markdown (.md) files change. |
| 34 | +- Jenkins runs a first small number of tests to provide fast feedback, and then it runs additional tests. |
| 35 | + |
| 36 | +#### Tests |
| 37 | + |
| 38 | +- **continuous-integration/jenkins/pr-head** - Jenkins main pipeline script execution status. |
| 39 | +- **jenkins-ci/build-ARM** - Build Mbed OS and examples with [ARM compiler](https://developer.arm.com/products/software-development-tools/compilers/arm-compiler). Related commands: |
| 40 | + - `mbed test --compile -t <toolchain> -m <target> `. |
| 41 | + - `python -u mbed-os/tools/test/examples/examples.py compile <toolchain> --mcu <target>`. |
| 42 | +- **jenkins-ci/build-GCC_ARM** - Build Mbed OS and examples with GCC_ARM. |
| 43 | +- **jenkins-ci/build-IAR** - Build Mbed OS and examples with IAR. |
| 44 | +- **jenkins-ci/cloud-client-test** - Test the change with [mbed-cloud-client](https://github.com/ARMmbed/mbed-cloud-client) using the [mbed-cloud-client-example](https://github.com/ARMmbed/mbed-cloud-client-example). |
| 45 | +- **jenkins-ci/dynamic-memory-usage** - Report dynamic memory use compared to the master branch. |
| 46 | +- **jenkins-ci/exporter** - Export and build exported code. Related commands: |
| 47 | + - `python -u mbed-os/tools/test/examples/examples.py export <exporter> --mcu <target>`. |
| 48 | +- **jenkins-ci/greentea-test** - Run [greentea tests](/docs/tools/testing/testing_greentea.html). |
| 49 | +- **jenkins-ci/mbed2-build-ARM** - Build Mbed OS 2 with [ARM compiler](https://developer.arm.com/products/software-development-tools/compilers/arm-compiler). Related commands: |
| 50 | + - `python tools/build_release.py -p <target> -t <toolchain>`. |
| 51 | +- **jenkins-ci/mbed2-build-GCC_ARM** - Build Mbed OS 2 with GCC_ARM. |
| 52 | +- **jenkins-ci/mbed2-build-IAR** - Build Mbed OS 2 with IAR. |
| 53 | +- **jenkins-ci/unittests** - Run [unit tests](/docs/tools/testing/unit_testing.html). |
| 54 | +- **tools-test-linux** - Test that tools work on Linux. |
| 55 | +- **tools-test-mac** - Test that tools work on macOS. |
| 56 | +- **tools-test-windows** - Test that tools work on Windows. |
0 commit comments