Pipeline Templates are stored under a /templates
folder in your source code repository, and each Pipeline Template is defined as a subfolder containing two files:
-
Jenkinsfile
: A standard Pipeline Jenkinsfile, which supports either Declarative Pipeline syntax or Groovy scripting. -
template.yaml
: A YAML file containing the template’s parameters.
To set up a Pipeline Template, create the subfolder for each template, the Jenkinsfile
and the template.yaml
file:
-
Change to the
/templates
directory. -
Create the subfolder for the template.
-
Using the text editor of your choice, create an empty file.
-
Populate the file with the appropriate
template.yaml
configuration values. -
Save the file as
template.yaml
. -
Create another empty file and populate it with the appropriate
Jenkinsfile
configuration values. -
Save the file as
Jenkinsfile
. -
Commit the subfolder and files to the
/templates
directory of your source code repository.
Customizing Template parameters
Templates are customized using the optional parameters
section of the template.yaml
file. Parameters are defined in template.yaml
, and are then used as substitution variables in the Jenkinsfile
.
Each parameter is specified as a block containing a mixture of required and optional fields. These values can be customized each time a Pipeline based on a Template is updated.
The following table lists the valid options for each parameter.
Parameter | Description | Required? |
---|---|---|
name |
The name used for the parameter in the Jenkinsfile. |
Yes |
displayName |
The name used in the CloudBees CI user interface; shown to the developer when they are creating a new job. |
Yes |
allowedValues |
An array containing the list of values allowed for the parameter. |
No |
default |
The default value to be used for the parameter. If specified in the |
No |
type |
The data type for the parameter (DataType). See the types table for details on the supported type values. |
Yes |
The following table lists the valid options for the type parameter:
Type | Description | Required? |
---|---|---|
string |
A literal string. For example, users could specify "SlackChannel". The string parameter also supports allowedValues for populating the ChoiceControl (radio button list) in the CloudBees CI user interface when the developer is creating the job. |
No |
number |
An integer. |
No |
boolean |
A control for enabling the developer to select an option. For a future templating version, we will consider adding support for a new type to enable a list of items that supports selection of multiple values. Displayed in the CloudBees CI user interface as a checkbox. |
No |
credentials |
The ID of credentials managed by Jenkins. The GUI will display the drop down list of available credentials. |
No |
Example template.yaml
version: 1 type: pipeline-template name: Java Maven App Pipeline Job description: Simple Java App With Maven parameters: - name: emailRecipient type: string displayName: Email address to be used for sending build notifications - name: github_repo type: string displayName: GitHub HTTPS repo endpoint - name: github_creds displayName: GitHub Credentials ID type: credentials defaultValue: github-creds-example
Example Jenkinsfile
pipeline { agent any stages { stage('Checkout') { steps { git credentialsId: "${github_creds}", url: "${github_repo}" } } stage('Build') { steps { sh 'mvn -B -DskipTests clean package' } } } post { // Email Ext plugin: success { emailext ( subject: "SUCCESSFUL: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'", body: """<p>SUCCESSFUL: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]':</p> <p>Check console output at "<a href='${env.BUILD_URL}'>${env.JOB_NAME} [${env.BUILD_NUMBER}]</a>"</p>""", to: "${emailRecipient}", from: "buildNotifications@emailaddress.com" ) } failure { emailext ( subject: "FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'", body: """<p>FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]':</p> <p>Check console output at "<a href='${env.BUILD_URL}'>${env.JOB_NAME} [${env.BUILD_NUMBER}]</a>"</p>""", to: "${emailRecipient}", from: "buildNotifications@emailaddress.com" ) } } }