Skip to content
wcm.io Jenkins Pipeline Library for CI/CD
Branch: master
Clone or download
tobias-richter Merge pull request #31 from wcm-io-devops/feature/fix-ansible-cps-issues
Fix CPS issues, fix issue when galaxy role is configured using name instead of src
Latest commit 60739f9 Apr 24, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
assembly Change assembly to make a complete package of the library Nov 13, 2018
docs
jenkinsfiles
resources/jenkinsPipelineLibrary/managedScripts/shell/maven
src
test
vars Set http_request calls in jenkinsRestApi to quiet Apr 23, 2019
.gitattributes Readded .groovy to gitattributes Jan 5, 2018
.gitignore update git settings Jan 4, 2018
.travis.maven-settings.xml
.travis.yml
LICENSE.txt
README.md Add jenkinsRestApi steps (#26) Mar 29, 2019
pom.xml [maven-release-plugin] prepare for next development iteration Apr 17, 2019

README.md

Build Status Code Coverage Maven Central Sonatype Snapshots

Jenkins Pipeline Library

Since Jenkins Pipeline has reached a certain state of production scripted pipelines are the way to go.

But: Not everything known from the UI is available in Pipeline and configuring and writing scripts is not so easy for the normal developer.

The target of this library is to take out some complexity (and yes adding some too) of the pipeline creation and to bring back some known functionality (for example GIT_BRANCH and SCM_URL environment variables, mail notification on still unstable etc.)

Want to see an example? Have look at Usage examples

Table of contents

Key concepts

The pipeline library was developed with a focus to ease Java and Maven build processes within companies which have a more or less similiar project structure e.g.

  • Maven/Java
  • local Artifact Server (like Sonatype Nexus or Artifactory)
  • GIT

The assumption is that in these environments

  • Jenkins has a dedicated user account to checkout code (or one per project)
  • the artifact server caches public artifacts and acts as a internal artifact server

So why configure maven repositories and scm credentials in every pipeline?

So the key concepts of the pipeline enable you to

  • Auto provide credentials (no worries, only Jenkins credential ids, not the credential itself) (see Credentials)
  • Auto provide maven settings (see ManagedFiles)
  • configure each job the same way (see ConfigStructure)
  • log and see the things you are interested in (see Logging)

to builds.

Running this pipeline library will result in more structured and easier to maintain pipeline scripts.

Configured properly this library enables you to checkout scm with these lines of code:

import static io.wcm.devops.jenkins.pipeline.utils.ConfigConstants.*
checkoutScm( (SCM) : [
        (SCM_URL) : "git@domain.tld/group/project.git",
    ]
)

Or running maven with local and global maven settings with these lines of code:

import static io.wcm.devops.jenkins.pipeline.utils.ConfigConstants.*
execMaven( 
    (SCM) : [
        (SCM_URL) : "git@domain.tld/group/project.git",
    ],
    (MAVEN): [
        (MAVEN_GOALS) : [ "clean", "install" ]
    ]
)

Looking for an example on how a pipeline script looks like when using Pipeline? Have a look at Usage examples

💡 Have a look at the setup tutorial to start using Pipeline Library.

Requirements

Have a look at requirements to get the library running.

Steps

The pipeline library comes with the following steps:

Utilities

Credential and managed file auto lookup

Support for command line execution

Setup your environment to use the pipeline library

Please refer to SetupTutorial for detailed instruction on how to setup the library in your environment.

Building/Testing

The library uses two approaches for testing.

The class parts are tested by unit testing using JUnit/Surefire. All unit tests have the naming format *Test.groovy and are located below test/io.

The step parts are tested by using Jenkins Pipeline Unit with jUnit/Failsafe. All integration tests have the naming format *IT.groovy and are located below test/vars.

Building with maven

mvn clean install

Changes / Version History

Please have a look at the Releases

You can’t perform that action at this time.