Limited Time Offer!

For Less Than the Cost of a Starbucks Coffee, Access All DevOpsSchool Videos on YouTube Unlimitedly.
Master DevOps, SRE, DevSecOps Skills!

Enroll Now

Jenkins Pipeline Tutorials: How to create folder and subfolder?

To create folders and subfolders in Jenkins using pipeline code, you can use Jenkins Job DSL or Groovy script. Here’s how you can accomplish this in a Jenkins pipeline:

Using Jenkins Job DSL

The Jenkins Job DSL plugin allows you to define jobs and folders programmatically. Here’s an example of how to create a folder and subfolder using Job DSL in a pipeline script:


pipeline {
    agent any

    stages {
        stage('Create Folders') {
            steps {
                script {
                    // Using Job DSL to create folders
                    jobDsl scriptText: '''
                    folder('MainFolder') {
                        displayName('Main Folder')
                        description('This is the main folder')
                    }

                    folder('MainFolder/SubFolder') {
                        displayName('Sub Folder')
                        description('This is a subfolder inside Main Folder')
                    }
                    '''
                }
            }
        }
    }
}

Explanation

1.  pipeline: This defines a Jenkins pipeline script.
2.  agent any: This specifies that the pipeline can run on any available agent.
3.  stages: The pipeline consists of stages, and each stage contains steps to execute.
4.  script: The script block is used to execute Groovy code.
5.  jobDsl: The jobDsl step is used to execute Job DSL scripts, which create and configure Jenkins jobs and folders.
6.  folder(): The folder() method is used to define a folder. You specify the folder path, and optional display name and description.

Using Jenkins Groovy Script


import jenkins.model.*
import com.cloudbees.hudson.plugins.folder.*

// Function to create a folder
def createFolder(folderName, parentFolder = null) {
    def jenkins = Jenkins.instance
    def folder
    if (parentFolder) {
        folder = parentFolder.getItem(folderName)
    } else {
        folder = jenkins.getItem(folderName)
    }
    
    if (folder == null) {
        def folderDescriptor = jenkins.getDescriptorByType(Folder.DescriptorImpl.class)
        folder = folderDescriptor.newInstance(jenkins, folderName)
        if (parentFolder) {
            parentFolder.add(folder, folderName)
        } else {
            jenkins.add(folder, folderName)
        }
        println("Folder '${folderName}' created successfully.")
    } else {
        println("Folder '${folderName}' already exists.")
    }
    return folder
}

node {
    stage('Create Folders') {
        // Create a top-level folder
        def mainFolder = createFolder('MainFolder')

        // Create a subfolder inside the main folder
        createFolder('SubFolder', mainFolder)
    }
}

Explanation

•   Imports: Import Jenkins and Folder classes to interact with Jenkins and create folders.
•   createFolder Function: This function checks if a folder already exists and creates it if it doesn’t. It can create both top-level folders and subfolders.
•   Jenkins API: The script uses the Jenkins API to create folders programmatically.

Usage

•   Job DSL Plugin: If using the Job DSL method, ensure the Jenkins Job DSL plugin is installed and enabled.
•   Permissions: Ensure that the Jenkins user executing the script has the necessary permissions to create folders.
•   Execution: You can execute these scripts as part of a Jenkins pipeline job to automate folder management.
Rajesh Kumar
Follow me
Subscribe
Notify of
guest
0 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x