Adds the Pipeline step ‘walk’ to execute a pipeline task for the job and all its downstream jobs. # Summary Jenkins has introduced a new way to configure the jobs - using pipeline groovy scripts. Pipeline allows to configure a build process in a flexible way. Comparing to classical job configuration pipelines is way more powerful, manage-able and expressive configuration tool. The Jenkins pipeline-dependency-walker allows you to tackle the problem of executing same pipeline routine for the job and all its downstream jobs. For maven projects that means an execution of the same routine for all the jobs defined as SNAPSHOT dependencies of the given job. The execution graph can be visualized using [Dependency Graph View Plugin](https://wiki.jenkins.io/display/JENKINS/Dependency+Graph+View+Plugin). Some extra documentation for this plugin is in the [GitHub](https://github.com/jenkinsci/pipeline-dependency-walker-plugin) # Usage scenarios ## 1. Clean build The plugin can be used to preform a clean build in the isolated environment for the group of dependent projects. Example of pipeline configuration: ``` syntaxhighlighter-pre node { stage('build') { echo "cleanup workspace" deleteDir() mvnRepo=pwd() + "/m2" // set local maven repo echo "use maven repo $mvnRepo" walk job: 'parent-project', jobAction: ''' dir(JOB_NAME) { git url: JOB_SCM_URL, branch: JOB_SCM_BRANCH, credentialsId: JOB_SCM_CREDINTIALS_ID withMaven(maven: 'mvn', mavenLocalRepo: mvnRepo) { sh "mvn clean install" } } ''' } } ``` ## 2. Multiple (cascade) release Another use case is a multiple release. When the release action (see [Release Plugin](https://wiki.jenkins.io/display/JENKINS/Release+Plugin) or [M2 Release Plugin](https://wiki.jenkins.io/display/JENKINS/M2+Release+Plugin)) is defined in a way that it drops SNAPSHOT keyword from dependencies, than using this plugin one can trigger a consistent release of multiple modules. In this scenario release should first update dependencies, for example invoking following maven target: ``` syntaxhighlighter-pre versions:use-releases scm:checkin \-Dmessage="drop snapshot versions" ``` In some way the plugin is an alternative to [Maven Cascade Release Plugin](https://wiki.jenkins.io/display/JENKINS/Maven+Cascade+Release+Plugin). Example of pipeline configuration: ``` syntaxhighlighter-pre node { stage('build') { walk job: 'parent-project', failOnUnstable: true, jobAction: 'release JOB_NAME' } } ```