Snippets

SVTi Public Code Example: JobDSL pipeline

Updated by Alexander Bethke

File example-jobdsl.groovy Modified

  • Ignore whitespace
  • Hide word diff
         colorizeOutput('xterm') // colours in job logs
         timestamps() // timestamps in job logs
         // Append shortened git hash to build name
-        // Bind environment variable to binary-repo credentials from Jenkins credentials store
         buildName('#${BUILD_NUMBER}-${GIT_REVISION,length=7}')
-        usernamePassword(usernameVariable='BINARY_REPO_READ_USR', passwordVariable='BINARY_REPO_READ_PSW', credentialsId='binary-repo-read')
+        // Bind environment variable to binary-repo credentials from Jenkins credentials store
         credentialsBinding {
+            usernamePassword(usernameVariable='BINARY_REPO_READ_USR', passwordVariable='BINARY_REPO_READ_PSW', credentialsId='binary-repo-read')
         }
     }
     scm {
Updated by Alexander Bethke

File example-jobdsl.groovy Modified

  • Ignore whitespace
  • Hide word diff
 }
 
 job("${folderName}/2-publish") {
-// Only bind binary-repo-write credentials in publish stage
+    // Only bind binary-repo-write credentials in publish stage
     using "${folderName}/template"
     wrappers {
-    usernamePassword(usernameVariable='BINARY_REPO_WRITE_USR', passwordVariable='BINARY_REPO_WRITE_PSW', credentialsId='binary-repo-write')
         credentialsBinding {
+            usernamePassword(usernameVariable='BINARY_REPO_WRITE_USR', passwordVariable='BINARY_REPO_WRITE_PSW', credentialsId='binary-repo-write')
         }
     }
     steps {
Created by Alexander Bethke

File example-jobdsl.groovy Added

  • Ignore whitespace
  • Hide word diff
+gitUrl = 'git@scmhosting.org/org/project.git'
+folderName = 'jobdsl-example'
+defaultViewName = 'Pipeline View'
+initialJobName = "1-build"
+
+folder(folderName) {
+    primaryView(defaultViewName)
+}
+
+deliveryPipelineView("${folderName}/${defaultViewName}") {
+    pipelineInstances(3)
+    allowPipelineStart(true)
+    sorting(Sorting.TITLE)
+    updateInterval(5)
+    enableManualTriggers(true)
+    showAvatars()
+    showChangeLog()
+    pipelines {
+        component("JobDSL pipeline view", initialJobName)
+    }
+}
+
+job("${folderName}/template") {
+    // Configure job retention policy
+    logRotator(daysToKeep=14, numToKeep=10, artifactDaysToKeep=14, artifactNumToKeep=10)
+    checkoutRetryCount(5)
+    wrappers {
+        colorizeOutput('xterm') // colours in job logs
+        timestamps() // timestamps in job logs
+        // Append shortened git hash to build name
+        // Bind environment variable to binary-repo credentials from Jenkins credentials store
+        buildName('#${BUILD_NUMBER}-${GIT_REVISION,length=7}')
+        usernamePassword(usernameVariable='BINARY_REPO_READ_USR', passwordVariable='BINARY_REPO_READ_PSW', credentialsId='binary-repo-read')
+        credentialsBinding {
+        }
+    }
+    scm {
+        git {
+            remote {
+                name('master')
+                url(gitUrl)
+                credentials('gitCredentials')
+            }
+            branch('*/master')
+        }
+    }
+    publishers {
+        // Wiping out the workspace (to limit unnecessary surprises and backup size)
+        wsCleanup {
+            deleteDirectories(true)
+            setFailBuild(false)
+        }
+    }
+}
+
+job("${folderName}/${initialJobName}") {
+    using "${folderName}/template"
+    // Sets up pipeline trigger using SCM change polling
+    triggers {
+        scm('H/5 * * * *')
+    }
+    steps {
+        // build and test
+        gradle('clean build')
+    }
+    publishers {
+        // Record test results
+        archiveJunit('**/build/test-results/*.xml')
+        // Manual trigger for production release
+        buildPipelineTrigger("${folderName}/2-publish")
+    }
+}
+
+job("${folderName}/2-publish") {
+// Only bind binary-repo-write credentials in publish stage
+    using "${folderName}/template"
+    wrappers {
+    usernamePassword(usernameVariable='BINARY_REPO_WRITE_USR', passwordVariable='BINARY_REPO_WRITE_PSW', credentialsId='binary-repo-write')
+        credentialsBinding {
+        }
+    }
+    steps {
+        gradle('clean publish')
+    }
+}
HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.