Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/folio-org/jenkins-pipeline-libs
Shared library for Jenkins Pipeline
https://github.com/folio-org/jenkins-pipeline-libs
Last synced: 3 months ago
JSON representation
Shared library for Jenkins Pipeline
- Host: GitHub
- URL: https://github.com/folio-org/jenkins-pipeline-libs
- Owner: folio-org
- Created: 2017-08-24T14:52:54.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2024-07-30T13:08:16.000Z (3 months ago)
- Last Synced: 2024-07-31T11:39:38.441Z (3 months ago)
- Language: Groovy
- Size: 649 KB
- Stars: 1
- Watchers: 9
- Forks: 7
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Codeowners: CODEOWNERS
Awesome Lists containing this project
README
# Shared library for FOLIO Jenkins Pipeline
This repository contains the Jenkins pipeline shared library used for FOLIO CI/CD by projects
located at https://github.com/folio-orgThe 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 https://github.com/folio-org 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
http://folio-registry.aws.indexdata.com* '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 = truedoDocker = {
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](https://www.busybox.net/about.html), a
multi-call binary that contains `wget` with reduced number of options.Investigate the configuration of other similar repositories, e.g.
[mod-notes](https://github.com/folio-org/mod-notes) and
[ui-checkin](https://github.com/folio-org/ui-checkin).There are other options available to 'buildNPM', 'buildMvn', and 'buildJavaDocker' for certain
corner cases. Check these scripts directly for additional information.