{"id":14133,"date":"2023-06-06T11:50:44","date_gmt":"2023-06-06T06:20:44","guid":{"rendered":"https:\/\/opstree.com\/blog\/\/?p=14133"},"modified":"2026-03-05T18:00:06","modified_gmt":"2026-03-05T12:30:06","slug":"jenkins-job-creation-using-multibranch-job-dsl","status":"publish","type":"post","link":"https:\/\/opstree.com\/blog\/2023\/06\/06\/jenkins-job-creation-using-multibranch-job-dsl\/","title":{"rendered":"Jenkins Job Creation using Multibranch Job DSL"},"content":{"rendered":"\r\n<p>To set up a Jenkins Multibranch Pipeline job via the Job DSL plugin, you must create a Groovy script within a &#8220;seed&#8221; job that programmatically outlines the multibranch configuration. This Job DSL script will then create the actual Multibranch Pipeline job.<\/p>\r\n<h2 style=\"font-size: 28px;\"><strong>Introduction<\/strong><\/h2>\r\n\r\n\r\n\r\n<p class=\"has-text-align-left\">In this blog, we will explore the world of Jenkins job DSL and learn how to leverage its capabilities to streamline and automate job configuration management. We will walk through the process of setting up the Job DSL environment, writing Job DSL scripts to define different types of jobs, managing job configurations as code, and integrating Job DSL with your CI\/CD pipelines.<!--more--><\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\" style=\"font-size: 28px;\">Prerequisites<\/h2>\r\n\r\n\r\n\r\n<p>Before getting started, ensure that you have the following prerequisites in place:<\/p>\r\n\r\n\r\n\r\n<ul>\r\n<li><a href=\"https:\/\/opstree.com\/blog\/2023\/05\/09\/how-to-setup-sso-in-jenkins\/\">Jenkins<\/a> is installed and running.<\/li>\r\n\r\n\r\n\r\n<li>Job DSL plugin is installed and configured in Jenkins.<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<h2 style=\"font-size: 28px;\"><strong>What is Job DSL?<\/strong><\/h2>\r\n\r\n\r\n\r\n<p>Job DSL is a powerful plugin that allows you to define Jenkins jobs as code, bringing the benefits of version control, automation, and scalability to job configuration management. With Job DSL, you can write Groovy scripts to define Jenkins job configurations programmatically.\u00a0<\/p>\r\n\r\n\r\n\r\n<p>DSL stands for <strong>Domain Specific Language<\/strong>.\\<\/p>\r\n<p><strong>[ Also Check: <a href=\"https:\/\/opstree.com\/services\/devsecops-transformation-and-automation\/\">Kubernetes Service<\/a> ]<\/strong><\/p>\r\n\r\n\r\n\r\n<h2 style=\"font-size: 26px;\"><strong>Some of the important methods in Job DSL are<\/strong><\/h2>\r\n\r\n\r\n\r\n<p>a. <strong>folder: <\/strong>You can create a folder using the <code>folder<\/code> DSL method. Folders provide a way to organize your jobs and create a hierarchical structure in Jenkins. Here&#8217;s an example of how to create a folder using the Job DSL:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>folder('Microservice') {\r\n    displayName('Microservice')\r\n    description('Folder for Microservice')\r\n}<\/code><\/pre>\r\n\r\n\r\n\r\n\r\n\r\n<p>b. <strong>pipelineJob:<\/strong> To create a Pipeline job, you can use the <code>pipelineJob<\/code> DSL method. The <code>pipelineJob<\/code> the method allows you to define a Pipeline job with its stages and configuration. Here&#8217;s an example of how to create a Pipeline job using the Job DSL:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>pipelineJob('sample-app') {\r\n  definition {\r\n    cpsScm {\r\n      scm {\r\n        git {\r\n          remote {\r\n            url(\"https:\/\/gitlab.com\/tarandeepsingh009\/infrastructure.git\")\r\n            credentials('gitlab-token')\r\n          }\r\n          branch('main')\r\n        }\r\n      }\r\n      scriptPath(\"Jenkinsfile\")\r\n    }\r\n  }\r\n}<\/code><\/pre>\r\n\r\n\r\n\r\n<p>c. <strong>multibranchPipelineJob:<\/strong> To create a Multi-Branch Pipeline job, you can use the <code>multibranchPipelineJob<\/code> DSL method. The <code>multibranchPipelineJob<\/code> method allows you to define a Multi-Branch Pipeline job that automatically discovers and builds branches in your source code repository. Here&#8217;s an example of how to create a Multi-Branch Pipeline job using the Job DSL:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>multibranchPipelineJob('sample-app') {\r\n    branchSources {\r\n      branchSource {\r\n        source {\r\n        git {\r\n            id('sample-app')\r\n            remote('https:\/\/gitlab.com\/tarandeepsingh009\/infrastructure.git')\r\n                credentialsId('gitlab-token')\r\n        }\r\n    }\r\n        strategy {\r\n                    defaultBranchPropertyStrategy {\r\n                        props {\r\n                            noTriggerBranchProperty()\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    configure {\r\n        def traits = it \/ sources \/ data \/ 'jenkins.branch.BranchSource' \/ source \/ traits\r\n        traits &lt;&lt; 'jenkins.plugins.git.traits.BranchDiscoveryTrait' {}\r\n    }\r\n        factory {\r\n            workflowBranchProjectFactory {\r\n                scriptPath('Jenkinsfile')\r\n            }\r\n        }\r\n    orphanedItemStrategy {\r\n        discardOldItems {\r\n            numToKeep(20)\r\n        }\r\n    }\r\n}<\/code><\/pre>\r\n\r\n\r\n\r\n<p>Let&#8217;s move ahead with implementation.<\/p>\r\n\r\n\r\n\r\n<p>Step 1: Login to <strong>Jenkins<\/strong> server.\u00a0<\/p>\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14162\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/05\/screenshot-2023-05-18-205143.png?w=515\" alt=\"\" width=\"277\" height=\"316\" \/><\/figure><\/div>\r\n\r\n\r\n<p>Step 2: Click on <a href=\"https:\/\/plugins.jenkins.io\/job-dsl\/\" target=\"_blank\" rel=\"noopener\"><strong>Manage Jenkins<\/strong><\/a> and go to <strong>Manage Plugins<\/strong> section.<\/p>\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14163\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/05\/screenshot-2023-05-18-212254.png?w=1024\" alt=\"\" width=\"592\" height=\"199\" \/><\/figure><\/div>\r\n\r\n\r\n<p>Step 3: In the <strong>Available plugins<\/strong> search for <strong>Job DSL<\/strong> and then install it.<\/p>\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14164\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/05\/screenshot-2023-05-18-210215.png?w=1024\" alt=\"\" width=\"600\" height=\"164\" \/><\/figure><\/div>\r\n\r\n\r\n<p>Step 4: Once you have installed. Click on <strong>New Item<\/strong>, enter your item name and select <strong>Freestyle Project<\/strong>.<\/p>\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14165\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/05\/screenshot-2023-05-18-212547.png?w=616\" alt=\"\" width=\"636\" height=\"421\" \/><\/figure><\/div>\r\n\r\n\r\n<p>Step 5: Enter your <strong>Git repo URL<\/strong> and in the build steps dropdown, search for <strong>Process Job DSLs<\/strong>.<\/p>\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14262\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/05\/image-8.png?w=1024\" alt=\"\" width=\"664\" height=\"359\" \/><\/figure><\/div>\r\n\r\n\r\n<p>Step 6: Select <strong>Look on Filesystem<\/strong> as we have stored our Job DSL code in VCS and enter your seed job name.<\/p>\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14167\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/05\/screenshot-2023-05-19-113911.png?w=1024\" alt=\"\" width=\"657\" height=\"372\" \/><\/figure><\/div>\r\n\r\n\r\n<p>Step 7: Save it and then click on <strong>Build Now<\/strong>.<\/p>\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14168\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/05\/screenshot-2023-05-18-211914.png?w=298\" alt=\"\" width=\"212\" height=\"352\" \/><\/figure><\/div>\r\n\r\n\r\n<p class=\"has-medium-font-size\">Here is the output:<\/p>\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14157\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/05\/screenshot-2023-05-22-011610.png?w=1024\" alt=\"\" width=\"707\" height=\"178\" \/><\/figure><\/div>\r\n\r\n\r\n<p>In the example below, we are creating a folder and inside that folder creating a pipeline job structure.<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>folder('Microservice') {\r\n    displayName('Microservice')\r\n    description('Folder for Microservice')\r\n}\r\n\r\nfolder('Microservice\/application') {\r\n  pipelineJob('Microservice\/application\/sample-app') {\r\n\u00a0 definition {\r\n\u00a0 \u00a0 cpsScm {\r\n\u00a0 \u00a0 \u00a0 scm {\r\n\u00a0 \u00a0 \u00a0 \u00a0 git {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 remote {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 url(\"https:\/\/gitlab.com\/tarandeepsingh009\/infrastructure.git\")\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 credentials('gitlab-token')\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 branch('main')\r\n\u00a0 \u00a0 \u00a0 \u00a0  }\r\n\u00a0 \u00a0 \u00a0 }\r\n\u00a0 \u00a0 \u00a0 scriptPath(\"Jenkinsfile\")\r\n\u00a0 \u00a0   }\r\n\u00a0   }\r\n  }\r\n}<\/code><\/pre>\r\n\r\n\r\n\r\n<p>Output of Pipeline Job:<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14159\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/05\/screenshot-2023-05-22-013606.png?w=1024\" alt=\"\" width=\"631\" height=\"181\" \/><\/figure>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p>The above example was for a single branched setup. What if we create a new branch for adding\/testing a feature and want to test such code? For this, we need to edit our seed job, change branch name and re-run it.<\/p>\r\n\r\n\r\n\r\n<p>You can see that every time we need to make such changes for running the specific branch.\u00a0<\/p>\r\n\r\n\r\n\r\n<p>Here comes the concept of Multibranch pipeline. In the example below, we are creating a folder and inside that folder creating a multibranch pipeline job.<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>folder('Microservice') {\r\n    displayName('Microservice')\r\n    description('Folder for Microservice')\r\n}\r\n\r\nfolder('Microservice\/application') {\r\n  multibranchPipelineJob('Microservice\/application\/sample-app') {\r\n    branchSources {\r\n      branchSource {\r\n        source {\r\n         git {\r\n          id('sample-app')\r\n\u00a0 \u00a0 \u00a0 \u00a0   remote('https:\/\/gitlab.com\/tarandeepsingh009\/infrastructure.git')\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 credentialsId('gitlab-token')\r\n\u00a0 \u00a0 \u00a0 \u00a0   }\r\n\u00a0 \u00a0     }\r\n\u00a0 \u00a0 \u00a0 \u00a0 strategy {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 defaultBranchPropertyStrategy {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 props {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 noTriggerBranchProperty()\r\n\u00a0 \u00a0 \u00a0 \u00a0  \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }\r\n\u00a0 \u00a0 \u00a0 \u00a0  \u00a0 \u00a0 }\r\n\u00a0 \u00a0 \u00a0 \u00a0  }\r\n\u00a0 \u00a0 }\r\n\u00a0 \u00a0 configure {\r\n\u00a0 \u00a0 \u00a0 \u00a0 def traits = it \/ sources \/ data \/ 'jenkins.branch.BranchSource' \/ source \/ traits\r\n\u00a0 \u00a0 \u00a0 \u00a0 traits &lt;&lt; 'jenkins.plugins.git.traits.BranchDiscoveryTrait' {}\r\n\u00a0 \u00a0 }\r\n\u00a0 \u00a0 \u00a0 \u00a0 factory {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 workflowBranchProjectFactory {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 scriptPath('Jenkinsfile')\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }\r\n\u00a0 \u00a0 \u00a0 \u00a0 }\r\n\u00a0 \u00a0 orphanedItemStrategy {\r\n\u00a0 \u00a0 \u00a0 \u00a0 discardOldItems {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 numToKeep(20)\r\n\u00a0 \u00a0 \u00a0 \u00a0 }\r\n\u00a0 \u00a0  }\r\n\u00a0  }\r\n}<\/code><\/pre>\r\n\r\n\r\n\r\n<p>Using multibranch pipeline we don\u2019t need to worry about new branch creation in our code. Simply, we just need to click on <strong>Scan Multibranch Pipeline Now<\/strong> and it will automatically add the new branches if we have created.<\/p>\r\n\r\n\r\n\r\n<p>Output of Multibranch Pipeline Job:<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14158\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/05\/screenshot-2023-05-22-012621.png?w=1024\" alt=\"\" width=\"665\" height=\"210\" \/><\/figure>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n<p><strong>[ Also Read: <a href=\"https:\/\/opstree.com\/blog\/2025\/08\/06\/llm-powered-etl-genai-data-transformation\/\">LLM-Powered ETL<\/a> ]<\/strong><\/p>\r\n\r\n\r\n\r\n<h2 style=\"font-size: 28px;\"><strong>Conclusion<\/strong><\/h2>\r\n\r\n\r\n\r\n<p>In conclusion, by leveraging the Job DSL plugin in Jenkins, we have successfully created folders to organize our jobs, defined pipeline jobs to automate our CI\/CD workflows, and utilized multibranch pipeline jobs to dynamically manage branches. With these capabilities, we can streamline our software delivery process and enhance our overall CI\/CD capabilities.<\/p>\r\n\r\n\r\n\r\n<p><strong>Blog Pundits: <a href=\"https:\/\/opstree.com\/blog\/\/author\/deepakgupta97\/\"><strong>Deepak Gupta<\/strong><\/a> and <a href=\"https:\/\/opstree.com\/blog\/\/author\/sandeep7c51ad81ba\/\" target=\"_blank\" rel=\"noreferrer noopener\">Sandeep Rawat<\/a><\/strong><\/p>\r\n\r\n\r\n\r\n\r\n\r\n<ul class=\"wp-block-social-links aligncenter is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-1 wp-block-social-links-is-layout-flex\"><li class=\"wp-social-link wp-social-link-linkedin  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.linkedin.com\/company\/opstree-solutions\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">LinkedIn<\/span><\/a><\/li>\r\n\r\n<li class=\"wp-social-link wp-social-link-youtube  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.youtube.com\/channel\/UCeLma6SpNYH7jjYKSBNSexw\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">YouTube<\/span><\/a><\/li>\r\n\r\n<li class=\"wp-social-link wp-social-link-github  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/github.com\/OpsTree\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">GitHub<\/span><\/a><\/li>\r\n\r\n<li class=\"wp-social-link wp-social-link-facebook  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.facebook.com\/opstree\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Facebook<\/span><\/a><\/li>\r\n\r\n<li class=\"wp-social-link wp-social-link-medium  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/medium.com\/buildpiper\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M20.962,7.257l-5.457,8.867l-3.923-6.375l3.126-5.08c0.112-0.182,0.319-0.286,0.527-0.286c0.05,0,0.1,0.008,0.149,0.02 c0.039,0.01,0.078,0.023,0.114,0.041l5.43,2.715l0.006,0.003c0.004,0.002,0.007,0.006,0.011,0.008 C20.971,7.191,20.98,7.227,20.962,7.257z M9.86,8.592v5.783l5.14,2.57L9.86,8.592z M15.772,17.331l4.231,2.115 C20.554,19.721,21,19.529,21,19.016V8.835L15.772,17.331z M8.968,7.178L3.665,4.527C3.569,4.479,3.478,4.456,3.395,4.456 C3.163,4.456,3,4.636,3,4.938v11.45c0,0.306,0.224,0.669,0.498,0.806l4.671,2.335c0.12,0.06,0.234,0.088,0.337,0.088 c0.29,0,0.494-0.225,0.494-0.602V7.231C9,7.208,8.988,7.188,8.968,7.178z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Medium<\/span><\/a><\/li>\r\n\r\n<li class=\"wp-social-link wp-social-link-twitter  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/twitter.com\/opstreedevops\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M22.23,5.924c-0.736,0.326-1.527,0.547-2.357,0.646c0.847-0.508,1.498-1.312,1.804-2.27 c-0.793,0.47-1.671,0.812-2.606,0.996C18.324,4.498,17.257,4,16.077,4c-2.266,0-4.103,1.837-4.103,4.103 c0,0.322,0.036,0.635,0.106,0.935C8.67,8.867,5.647,7.234,3.623,4.751C3.27,5.357,3.067,6.062,3.067,6.814 c0,1.424,0.724,2.679,1.825,3.415c-0.673-0.021-1.305-0.206-1.859-0.513c0,0.017,0,0.034,0,0.052c0,1.988,1.414,3.647,3.292,4.023 c-0.344,0.094-0.707,0.144-1.081,0.144c-0.264,0-0.521-0.026-0.772-0.074c0.522,1.63,2.038,2.816,3.833,2.85 c-1.404,1.1-3.174,1.756-5.096,1.756c-0.331,0-0.658-0.019-0.979-0.057c1.816,1.164,3.973,1.843,6.29,1.843 c7.547,0,11.675-6.252,11.675-11.675c0-0.178-0.004-0.355-0.012-0.531C20.985,7.47,21.68,6.747,22.23,5.924z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Twitter<\/span><\/a><\/li><\/ul>\r\n","protected":false},"excerpt":{"rendered":"<p>To set up a Jenkins Multibranch Pipeline job via the Job DSL plugin, you must create a Groovy script within a &#8220;seed&#8221; job that programmatically outlines the multibranch configuration. This Job DSL script will then create the actual Multibranch Pipeline job. Introduction In this blog, we will explore the world of Jenkins job DSL and &hellip; <a href=\"https:\/\/opstree.com\/blog\/2023\/06\/06\/jenkins-job-creation-using-multibranch-job-dsl\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Jenkins Job Creation using Multibranch Job DSL&#8221;<\/span><\/a><\/p>\n","protected":false},"author":232992100,"featured_media":29692,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[28070474],"tags":[44070,768739308,676319247,768739299,343865,4996032],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2023\/06\/Jenkins-Job-Creation-using-Multibranch-Job-DSL.png","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pfDBOm-3FX","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/14133"}],"collection":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/users\/232992100"}],"replies":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/comments?post=14133"}],"version-history":[{"count":27,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/14133\/revisions"}],"predecessor-version":[{"id":30905,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/14133\/revisions\/30905"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media\/29692"}],"wp:attachment":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media?parent=14133"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/categories?post=14133"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/tags?post=14133"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}