Skip to content


Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Shared library for FOLIO Jenkins Pipeline

This repository contains the Jenkins pipeline shared library used for FOLIO CI/CD by projects located at

The library assumes a lot about the configuration of the Jenkins server and the FOLIO development workflow, so it's probably of limited use outside the FOLIO Jenkins context.

To utilize this library for projects, add a 'Jenkinsfile' to the top-level directory of the project repository. The library primarily supports two types of development environments at this time - Java-based Maven projects and Nodejs-based projects.

A typical Stripes or UI module Jenkinsfile configuration might look like the following.

buildNPM {
  publishModDescriptor = true
  runLint = true
  runTest = true
  runTestOptions = '--karma.singleRun --karma.browsers=ChromeDocker'  (for karma-based testing)
  runRegression = 'partial'

All parameters listed above are optional or specific to the project.

  • 'publishModDescriptor' - If a FOLIO Module Descriptor is defined package.json, the Module Descriptor will be generated and published to the FOLIO Module Descriptor registry at

  • 'runLint' - Will execute 'yarn lint' as part of the build. Ensure a 'lint' run script is defined in package.json before enabling this option.

  • 'runTest' - Will execute 'yarn test' as part of the build. Ensure a 'test' run script is defined in package.json. 'test' is typically used for unit tests.

  • 'runTestOptions' - Provide 'yarn test' with additional options

  • 'runRegression' - Will execute the UI regression test suite from 'ui-testing' against a real FOLIO backend. 'full' will execute the full test suite while 'partial' will execute only tests specific to the UI module'. 'none' disable regression testing.

A typical Maven-based, server-side FOLIO module Jenkinsfile configuration might look like the following.

buildMvn {
  publishModDescriptor = true
  mvnDeploy = true

  doDocker = {
    buildJavaDocker {
      publishMaster = true
      healthChk = true
      healthChkCmd = 'wget --no-verbose --tries=1 --spider http://localhost:8081/admin/health || exit 1'
  • 'mvnDeploy' - Deploy Maven artifacts to FOLIO Maven repository.

If we are creating and deploying a Docker image as part of the module's artifacts, specify 'doDocker' with 'buildJavaDocker' and the following options:

  • 'publishMaster' - Publish image to 'folioci' Docker repository on Docker Hub when building 'master' branch. This is the default.

  • 'healthChk' - Perform a container healthcheck during build. See 'healthChkCmd'.

  • 'healthChkCmd' - Use the specified command to perform container health check. The command is run inside the container and typically tests a REST endpoint to determine the health of the application running inside the container. Prefer wget over curl as Alpine by default ships without curl but with BusyBox, a multi-call binary that contains wget with reduced number of options.

Investigate the configuration of other similar repositories, e.g. mod-notes and ui-checkin.

There are other options available to 'buildNPM', 'buildMvn', and 'buildJavaDocker' for certain corner cases. Check these scripts directly for additional information.


Shared library for Jenkins Pipeline






No releases published


No packages published