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.
Latest posts by Rajesh Kumar (see all)
- Installing Jupyter: Get up and running on your computer - November 2, 2024
- An Introduction of SymOps by SymOps.com - October 30, 2024
- Introduction to System Operations (SymOps) - October 30, 2024