Continuous Integration Scripts for EPICS Modules
The scripts in this repository are intended to provide a common, easy-to-use and flexible way to add Continuous Integration to EPICS software modules, e.g. Device Support modules.
By including this repository as a Git Submodule, your module will always use an explicit commit, i.e. a fixed version of the scripts. That ensures that further development of these scripts cannot break your setup.
Travis-CI
Features
- Compile against different branches or releases of EPICS Base
- Use different versions of compilers (gcc, clang)
- Cross-compile for Windows 32bit using MinGW and WINE
- Cross-compile for RTEMS 4.9 and 4.10
- Compile on MacOS
How to Use these Scripts
-
Get an account on Travis-CI, connect it to your GitHub account and activate your support module's repository. For more details, please refer to the Travis-CI Tutorial. Make sure to use
travis-ci.organd not their.comsite. -
In your Support Module, add this respository as a Git Submodule (name suggestion:
.ci).$ git submodule add https://github.com/epics-base/ci-scripts .ci -
Create a Travis configuration by copying one of the examples.
$ cp .ci/.travis.yml.example-full .travis.yml -
Edit the
.travis.ymlconfiguration to include the jobs you want Travis to run. -
Push your changes and check travis-ci.org for your build results.
Releases and Numbering
Major release numbers refer to the API, which is more or less defined
by the .travis.yml.example-full configuration example.
Changing this file for the existing configuration options or to add
new configurations options will usually cause a new major release.
Minor release numbers refer to bugfixes that should not require a user
module (i.e., its .travis.yml) to be changed.
Again: using git submodule to include these scripts means that user modules always work with a fixed, frozen version of these scripts. I.e., developments in the ci-scripts will never break an existing application. These release numbering considerations are just a hint to assess the risk when updating the submodule.