This repository holds shared library for Jenkins Pipeline
The Jenkins library requires sophisticated operation on Jenkins objects, which requires to be setup as Global Pipeline Libraries
to avoid extra In-process Script Approval
.
Manage Jenkins
- Configure System
section, find Global Pipeline Libraries
and click ADD
.
jenkins-library
. Set Default version
to master
.Retrieval method
, choose Modern SCM
.Source Code Management
section, choose GitHub
.If you didn't check Load implicitly
when configuring the job, you need to use @Library
to import it.
In your Jenkinsfile, you can add def lib = library("jenkins-library").org.zowe.jenkins_shared_library
on top of the file to import library.
Then you can use any classes/methods defined in the library. For example:
github = lib.scm.GitHub.new(this)
github.init([...])
github.commit('my test')
To start test, run gradle command gradle test
.
Run gradle command gradle groovydoc
to generate documentation.
All below scenarios are based on master
version v2.3.4
as example, timestamp string example is 20190101000000
.
master
branch is for release purpose and have been reviewed by Pull Request reviewers.release
:
Perform Release
: boolean, default is false.Pre-Release String
: string, default is empty. This parameter will only be used if Perform Release
is true. This parameter is required if the release is not happened on master
or v?.x/master
branch.master
, v?.x/master
, staging
and v?.x/staging
branches can do a release. This can be changed by pipeline.addReleaseBranches(...branches)
or pipeline.setReleaseBranches(...branches)
.master
's tag is latest
, staging
's tag is dev
. For branches do not have publish tag defined, or branches is not in release build, npm publish will use default snapshot
tag name, and the version will have normalized branch name included. For example, staging
branch non-release build will generate a version v2.3.4-staging-snapshot.20190101000000
release on snapshot
npm tag. staging
branch release build will generate a version v2.3.4-dev.20190101000000
release on dev
tag. And a branch feature/lts
build will generate a version v2.3.4-feature-lts-snapshot.20190101000000
release on snapshot
tag.master
's tag is 'snapshot'. If it's not defined, artifactory publish will use branch name as tag name. For example, master
non-release build will publish artifact to libs-snapshot-local/org/zowe/<component>/2.3.4-snapshot/
and release build will publish to libs-release-local/org/zowe/<component>/2.3.4/
. staging
non-release build will publish artifact to libs-snapshot-local/org/zowe/<component>/2.3.4-staging/
and release build will publish to libs-release-local/org/zowe/<component>/2.3.4-rc1/
, the rc1
is the pre-release string which is required.master
with default parameter values (Perform Release
= false, Pre-Release String
= empty)npm-local-release
as v2.3.4-snapshot-master.20190101000000
with npm tag snapshot
.libs-snapshot-local/org/zowe/<component>/2.3.4-snapshot/
as <component>-2.3.4-snapshot.20190101000000.(pax|zip)
.master
with (Perform Release
= true, Pre-Release String
= beta.1)npm-local-release
as v2.3.4-beta.1
with npm tag snapshot
.libs-release-local/org/zowe/<component>/2.3.4/
as <component>-2.3.4-beta.1.(pax|zip)
.v2.3.4-beta.1
will be created.master
with (Perform Release
= true, Pre-Release String
= empty)npm-local-release
as v2.3.4
with npm default tag latest
.libs-release-local/org/zowe/<component>/2.3.4/
as <component>-2.3.4.(pax|zip)
.v2.3.4
will be created.master
has version of 2.4.0
, and a commit can be seen from github commit history. This commit should be merged/cherry-picked back to staging
.staging
which IS a release branch with default parameter values (Perform Release
= false, Pre-Release String
= empty)npm-local-release
as v2.3.4-staging-snapshot.20190101000000
with npm tag snapshot
.libs-snapshot-local/org/zowe/<component>/2.3.4-staging/
as <component>-2.3.4-staging.20190101000000.(pax|zip)
.staging
which IS a release branch with default parameter values (Perform Release
= true, Pre-Release String
= rc.1)npm-local-release
as v2.3.4-rc.1
with npm tag dev
.libs-snapshot-local/org/zowe/<component>/2.3.4-staging/
as <component>-2.3.4-staging.20190101000000.(pax|zip)
.staging
which IS a release branch with default parameter values (Perform Release
= true, Pre-Release String
= empty)latest
, dev
, v1-latest
and v1-dev
tags. v1
is a LTS version, current master
is on v2.3.4
.master
- latest
staging
- dev
v1.x/master
- v1-latest
v1.x/staging
- v1-dev
staging
with (Perform Release
= true, Pre-Release String
= rc.1).master
with (Perform Release
= true, Pre-Release String
= rc.1), not suggested.master
with (Perform Release
= true, Pre-Release String
= empty).staging
to upgrade version to 2.4.0
.staging
with (Perform Release
= true, Pre-Release String
= rc.1), we should have v2.4.0-rc.1
.staging
into master
. After merged, master
should have a version definition of 2.4.0
instead of 2.3.4
.Perform Release
= true, Pre-Release String
= empty), we should have v2.4.0
.