The Jenkins Pipeline Library (JePL) is one of the core components of the EOSC-Synergy software and services quality assurance as a service platform (SQAaaS) aimed to foster the adoption of EOSC services through a quality based approach. It is a self contained component that facilitates the process of creation and execution of CI/CD pipelines.
The library facilitates the creation of Jenkins pipelines by using a YAML description to define the several stages that compose a CI/CD pipeline. The actions in the YAML configuration file are aligned with the criteria compiled in the software and service quality baselines , and rely on Docker Compose to orchestrate the required set of services needed during the quality assessment process. A minimal (single-stage) Jenkins CI/CD pipeline definition (Jenkinsfile) is required to dynamically compose the required set of stages defined as actions in the YAML description. This means that the use of this library does not limit the researcher to the criteria defined in the baselines, but the Jenkins Pipeline as Code structure is preserved, and thus, additional stages can be added directly in the pipeline. Once this file layout is placed in the application’s source code repository, the pipelines will be automatically constructed and executed through a Jenkins CI/CD.. This approach lowers the barriers that hinder the adoption of quality-based and sustainable software and service developments in research environments, enabling automation and agility.
In the context of the EOSC-Synergy SQAaaS platform, the library is used to enable the on-demand dynamic composition of Jenkins pipelines that perform the several steps of the required environments deployment followed by the quality assurance. These steps will implement the quality validation actions defined in the EOSC-synergy software and services quality criteria. Currently the library supports Infrastructure Manager (IM) and Kubernetes (K8s) for the infrastructure and services deployments. JePL v3 is already being developed to adopt IM and K8s as configuration as code, providing an improved experience to work with infrastructures and services.
The presentation will highlight the features and capabilities of the library in practice, showing how to easily create pipelines that implement and comply with the good practices that are expected during the software lifecycle, from development to production. This is particularly relevant to developers and managers of research services both at the infrastructure and thematic levels.