Abstract

This paper describes the current architecture of Continuous Integration (CI) service developed at Fermilab, encountered successes and difficulties, as well as future development plans. The current experiment code has hundreds of contributors that provide new features, bug fixes, and other improvements. Version control systems help developers to collaborate in contributing software for their experiments, while the CI system helps developers keep their code healthy. The Fermilab CI service allows experiments and projects to test and validate their offline production and analysis code on the supported platforms. It is built on top of Jenkins, designed to be set up from a configuration file that provides implementation for each phase of the CI workflow, and able to validate experiment code through grid jobs. This CI service provides a dashboard for easy access to logs and statistical graphs. Since the CI service has been adopted by Fermilab experiments/projects, it proved to be very useful to intercept issues in their code early on and get them fixed before running it in production. Currently the CI service is in use by the ArgoNeuT, DUNE, g-2, LArIAT, MINERvA, mu2e, NOvA, SBND and uBooNE experiments and by the following projects: ART and LArSoft software suites, GENIE, and Glidein-WMS. The CI service is under active development and planning to support code profiling.

Highlights

  • Fermilab Continuous Integration (CI) service aims to provide a common framework for all Fermilab experiments1 and software projects2 to build and test their software

  • This CI system is based on the open source Jenkins toolkit [1] and it offers a powerful tool for testing complex software

  • The Fermilab CI service provides a comprehensive framework for Fermilab experiments and projects to test and validate their offline production and analysis code on the supported platforms

Read more

Summary

Introduction

Fermilab Continuous Integration (CI) service aims to provide a common framework for all Fermilab experiments and software projects to build and test their software. Adopting the CI development practice, experiments ensure that well tested code is put into production which reduces eventual waste of computing and human resources This service offers an access to comprehensive testing from unit tests to physics validation through regression test on multiple platforms/compiler/optimization that are supported by code developers. This CI system is based on the open source Jenkins toolkit [1] and it offers a powerful tool for testing complex software. This service implements a notification that, when the CI build is completed, i.e. the code is built and tested, it reports, through an email and/or a Slack [2] notification, the final status of the CI build (i.e. successful, warning, failure), and, if it is not successful, there are few details about what was wrong

CI workflow configuration
CI system architecture
CI dashboard
Summary
Full Text
Paper version not known

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.