Created
March 16, 2017 15:15
-
-
Save abayer/ea2b26ad5555cb7a424d2b83ab721b6e to your computer and use it in GitHub Desktop.
New Declarative Pipeline features in 1.1
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pipeline { | |
agent { | |
// "node" is a new agent type that works the same as "label" but allows | |
// additional parameters, such as "customWorkspace" below. | |
node { | |
label "some-label" | |
// This is equivalent to the "ws(...)" step - sets the workspace on the | |
// agent to a hard-coded path. If it's not an absolute path, it'll be | |
// relative to the agent's workspace root. | |
customWorkspace "/use/this/path/instead" | |
} | |
} | |
// Shared libraries can now be loaded in through the Declarative syntax, | |
// as shown below. | |
libraries { | |
lib("some-lib@master") | |
} | |
// REGRESSION: JENKINS-42748 - string escaping for Windows paths in | |
// "environment" when using single quotes. This is being investigated. | |
environment { | |
FOO = "BAR" | |
// Environment variables can now reference other environment variables! | |
BARCAMP = "${FOO}CAMP" | |
// They can also reference the workspace path! | |
PATH_IN_WS = "${WORKSPACE}/child/path" | |
} | |
stages { | |
stage('some-stage') { | |
// REGRESSION: JENKINS-42762 - in 1.1.1, you can't nest multiple | |
// conditions directly within "when". You need to use "when { allOf { ... } }" | |
// instead. This will be fixed in the next release. | |
when { | |
// We have added logical conditions for "when" - specifically... | |
// "anyOf" - contains 1 or more nested condition and will resolve | |
// to true if *any* of the nested conditions are true. | |
anyOf { | |
// "allOf" - contains 1 or more nested conditions an will resolve | |
// to true if *all* of the nested conditions are true. | |
allOf { | |
branch "master" | |
expression { | |
// REGRESSION: JENKINS-42829 - methods defined elsewhere in | |
// the Jenkinsfile currently can't be used in "when" "expression"s. | |
return true | |
} | |
} | |
// "not" - contains 1 nested condition and will resolve to true | |
// if the nested condition is false. | |
not { | |
branch "some-other-branch-entirely" | |
} | |
} | |
} | |
steps { | |
// We've added the "validateDeclarativePipeline('some-file')" step, | |
// which will let you perform validation of a Declarative Pipeline | |
// from within a different Pipeline. This step can be used in | |
// Scripted Pipeline as well. | |
echo validateDeclarativePipeline("some-other-file.groovy") | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment