Folder Properties

A Jenkins plugin which allows users with config permission to define properties for a folder which can then be used by any jobs contained within it or any of its sub-folders. 

You can find this plugin's source code on Github.

 

About this Plugin

The aim here is to remove the need to specify the same properties over and over again for all the jobs inside a folder.

In structures where two or more folders are nested, any property defined for a folder will be overridden by any other property of the same name defined by one of its sub-folders.

Configuring Folder Properties

Just create a folder, go to its configuration page and add as many properties as you need under the Folder Properties section.

{height="250"}

Freestyle Jobs

Freestyle jobs must opt into the Folder Properties build wrapper from the Build Environment section of their configuration page in order to be able to access these properties as they would any other environment variable.

Pipeline Jobs

Pipeline jobs can use step withFolderProperties to access them:

Using folder properties in a pipeline job

withFolderProperties{
    echo("Foo: ${env.FOO}")
}

Jenkins deployments using some of the older versions of the Structs Plugin will need to do this using the wrap meta-step:

Using folder properties in older pipeline jobs

wrap([$class: 'ParentFolderBuildWrapper']) {
    echo("Foo: ${env.FOO}")
}

Job DSL

In Job DSL scripts you can define folder properties like so:

Job DSL example

folder('my folder') {
    properties {
        folderProperties {
            properties {
                stringProperty {
                    key('FOO')
                    value('foo1')
                }
            }
        }
    }
}