CI Setup for EPICS Base
This content provides insights into Continuous Integration (CI) setup for EPICS Base by Ralph Lange (ITER), Andrew Johnson (APS), and Michael Davidsaver (Osprey DCS). It also covers details about EPICS platforms, unit tests in base, Java parts of V4, Jenkins instances, and next-generation CI tools like Travis CI and AppVeyor. The overview includes information on build systems for C++ and Java, test coverage, Jenkins-based CI systems, and the need for future CI tools enhancement.
Download Presentation

Please find below an Image/Link to download the presentation.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.
You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.
E N D
Presentation Transcript
CI Setup for EPICS Base Ralph Lange (ITER), Andrew Johnson (APS), Michael Davidsaver (Osprey DCS)
EPICS Platforms Native platforms: Linux, Solaris, FreeBSD, MacOS, Windows, Cygwin Cross compilation target systems: Linux, Windows, iOS, vxWorks, RTEMS Cross compilation target architectures: intel x86, arm, cris, microblaze, 68k, ppc
Unit Tests in Base Number of tests and test coverage are increasing 3.14: 2.6k 3.15: 8.5k 3.16: 9.2k Test output is formatted as TAP (Test Anything Protocol)
Java Parts of V4 Maven as build tool Two layers of Maven submodules: Aggregation and inheritance Parent project contains Git submodules Does not play well with some Maven plugins Deployment to Maven Central
Two Jenkins Instances CloudBees: C++ and Java Linux host Release builds Pull request builds
Two Jenkins Instances APS: C++ builds Only master Host builds: Linux, MacOS, Solaris, Windows Cross builds to many targets
Generating CloudBees Jenkins Jobs CloudBees does not allow the Job DSL Plugin Script running on the server is too powerful Jenkins Job Builder Script creates job XML from YAML declarations (client side), then uploads to Jenkins
Next Generation CI Travis CI cloud based builds host builds for Linux (gcc, clang), WINE cross builds for RTEMS
Next Generation CI AppVeyor: Travis for Windows VS 2008, 2010, 2012, 2013, 2015, Cygwin, MinGW 32bit, 64bit DLL, static build debug, nodebug Full matrix: ~50 jobs, taking ~7 hours
Conclusion Build systems for both C++ and Java are in a good state Test coverage is good and improving Current Jenkins based CI systems already cover a lot Work to be done for next generation CI tools Please copy and contribute