Skip to content

Instantly share code, notes, and snippets.

@scrain
scrain / jenkins-reload-config-for-specific-jobs.groovy
Created September 21, 2021 17:35
Reloads the config for individual jobs
import java.io.InputStream;
import java.io.FileInputStream
import java.io.File;
import javax.xml.transform.stream.StreamSource
def hudson = hudson.model.Hudson.instance;
for(job in Jenkins.instance.getAllItems(Job.class)) {
if (job.name.contains("somename")) {
@scrain
scrain / jenkins-replace-job-labels.groovy
Created May 27, 2021 17:25
Jenkins script to replace all job labels from one value to another
String oldLabel = 'foo'
String newLabel = 'bar'
boolean dryRun = true
for (item in Jenkins.instance.getAllItems(Job.class).findAll{it.hasProperty('assignedLabel')}) {
if (oldLabel == item.assignedLabel.toString()) {
println "${item.name}: label being updated from '${oldLabel}' to '${newLabel}'"
if (!dryRun) {
item.setAssignedLabel(new hudson.model.labels.LabelAtom(newLabel))
}
@scrain
scrain / jenkins-find-jobs-with-string-in-latest-console-output.groovy
Created November 1, 2019 22:20
Jenkins script to find all jobs with specific string in latest build's console output
BUILD_STRING = "ERROR"
for (job in Jenkins.instance.getAllItems(Job.class)) {
if (job.builds[0]?.log?.contains(BUILD_STRING)) {
println "${job.name}: ${job.builds[0].id}"
}
}
@scrain
scrain / update-all-jenkins-jobs-from-old-jdk-to-new.groovy
Last active November 1, 2019 22:02
Script to update all Jenkins jobs using old JDK to new JDK
String oldJdkName = "JDK 1.7.0_80"
String newJdkName = "JDK 1.8.202"
boolean dryRun = true
Set jdks = new HashSet()
def newJdk = Jenkins.instance.getJDK(newJdkName)
assert newJdk, "unable to find a configured jdk named ${newJdkName}"
println "reconfiguring all jobs using ${oldJdkName} to use jdk '${newJdkName}'"
@scrain
scrain / jenkins-file-jobs-with-file-in-workspace-containing-string.groovy
Last active January 10, 2017 11:30
Jenkins script to find all jobs with a file in the workspace containing a string
def allJobs = hudson.model.Hudson.getInstance().allItems.findAll { it instanceof hudson.model.AbstractProject }
allJobs.findAll{
it.someWorkspace?.list().find{ f ->
( !f.isDirectory() && f.name.endsWith('.gradle') && f.readToString().contains('some string') )
}
}.each {
println "${it.name}\t${it.absoluteUrl}"
}
@scrain
scrain / gist:1508f843159af266d87e9b6bab8fbacc
Created August 23, 2016 15:16
bash - run cmd in each sub dir
for d in ./*/ ; do (cd "$d" && echo "$d" && somecommand ); done
@scrain
scrain / jenkins-jdk-job-report.groovy
Last active November 1, 2019 22:00
Jenkins script to report jobs by the JDK used
def jobsWithJdkSupport = Jenkins.instance.getAllItems(Job.class).findAll{it.hasProperty('JDK')}
def jdksInUse = jobsWithJdkSupport.collect{it.JDK?.name}.unique()
println "jdks in use: ${jdksInUse}\n"
jdksInUse.each{ jdk ->
println "jdk '${jdk}'"
jobsWithJdkSupport.findAll{ it.JDK?.name == jdk }.each { job ->
println "\t${job.name}"
@scrain
scrain / update-all-jenkins-jobs-jdks.groovy
Last active June 3, 2020 09:52
Jenkins script to update the JDK for all jobs
import hudson.model.*
String newJdkName = "JDK 1.7.0_80"
boolean dryRun = true
def h = Hudson.getInstance()
Set jdks = new HashSet()
def newJdk = h.getJDK(newJdkName)
assert newJdk, "unable to find a configured jdk named ${newJdkName}"
@scrain
scrain / build.gradle
Created May 4, 2016 21:17
Add outputs of one gradle task to another
assemble.dependsOn assembleWar
assemble.outputs.files assembleWar.outputs.files