Using CheatSheets To Apply Best Practices

CheatSheet: Jenkins & Groovy

CheatSheet: Jenkins & Groovy

1.1 Jenkins Pipeline

Name Comment
Specify parameter to run jobs build job:'job1', parameters:[string(name:'name1', value:va1)]
Run job in different agents node($agent_label) {...}
Ask for user input stage('stage2'){ input "OK to go?" }
Actively fail current pipeline job error("Build failed because of this and that..")
Check whether property exists if (env.keep_failed_env)
Jenkins Pipeline enable timestamps options{timestamps()}
Keep going when previous stage has failed keep-going-with-errors.groovy
Send slack notification in pipeline slack-notification.groovy
Pass parameter across jenkins jobs jenkinsfile-pass-parameter.groovy
Set timeout & retry jenkinsfile-timeout-retry.groovy
Use finally to do cleanup jenkinsfile-finally.groovy
Run jenkins jobs in a sequential way jenkinsfile-sequentially.groovy
Run jenkins jobs in parallel jenkinsfile-parallelly.groovy
Reference Link: Syntax Reference, Link: Jenkins User Documentation
Reference Link: Example, Link: Example

1.2 Config Jenkins Via Groovy

Name Comment
Set timezone for jenkins timezone.groovy
Configure default view jenkins-views.groovy
Configure Jenkins url jenkins-url.groovy
Create a Jenkins user create-jenkins-user.groovy
Groovy manages files/folders files-folder.groovy
Configure max executors in Jenkins master-executors.groovy
Config jenkins kubernetes plugin jenkins-kubernetes-cloud.groovy
Configure slack plugin config-slack.groovy
Reference GitHub: cloudbees/jenkins-scripts, GitHub: jenkinsci/pipeline-examples

1.3 Jenkins Job Via Groovy

Name Comment
List all my jenkins jobs println Jenkins.instance.projects.collect { it.name }
List all jenkins jobs list-all-jobs.groovy
Add a list of jobs by regexp to a view addjobstoview-byregexp.groovy
Create jenkins views and add jobs to it jenkins-views.groovy
Create and trigger a job create-jenkins-job.groovy
Manage jenkins jobs manage-jenkins-jobs.groovy
Cancel queued jenkins jobs by regexp kill-queued-jenkins.groovy

1.4 Jenkins Security Via Groovy

Name Comment
logged-in users can do anything logged-in-users.groovy
Enable ldap in Jenkins enable-ldap.groovy
Create a jenkins secret text create-secret-text.groovy
Configure authorization in Jenkins matrix-authorization-strategy.groovy
Jenkins skip wizzard when initialization -Djenkins.install.runSetupWizard=false

1.5 Load Jenkins settings via folder copy

Name Comment
Add default jobs Copy jobs/ /usr/share/jenkins/ref/jobs/
Copy custom built plugins COPY plugins/*.hpi /usr/share/jenkins/ref/plugins/
Use jenkins cli COPY config/jenkins.properties /usr/share/jenkins/ref/
Add jenkins groovy scripts COPY config/*.groovy /usr/share/jenkins/ref/init.groovy.d/
Configure Jenkins with some defaults COPY config/*.xml /usr/share/jenkins/ref/
Install jenkins plugins /usr/local/bin/install-plugins.sh < /usr/share/jenkins/ref/plugins.txt

1.6 Jenkins Plugins

Plugin Summary
Kubernetes Plugin Jenkins plugin to run dynamic agents in a Kubernetes/Docker environment
Credentials Plugin Load the ssh key
SiteMonitor Plugin Monitor URLs
Timestamper Plugin Add timestamp to job output
Dashboard View Plugin Create dashboard
Build-timeout Plugin Abort if job takes too long
Naginator Plugin Retry failed a job
ThinBackup Plugin Backup jenkins
JobConfigHistory Plugin Backup job configuration
Build User Vars Plugin Describe the user who started the build

1.7 Jenkins Git Via Groovy

Name Comment
Git checkout code git-checkout.groovy
Get all git commits since last success git-commits-before-fail.groovy
List git tags and branches git-list-tags-and-branches.groovy

1.8 Jenkins networking Via Groovy

Name Comment
Get hostname println InetAddress.localHost.canonicalHostName
Get IP address println InetAddress.localHost.hostAddress
Get hostname by ip get-ip-by-hostname.groovy
validate user input: ip address assert ip_address.matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}")

1.9 Jenkins with Kubernetes/Docker

Name Comment
Kubernetes Plugin Jenkins plugin to run dynamic agents in a Kubernetes/Docker environment
Config jenkins kubernetes plugin jenkins-kubernetes-cloud.groovy
Cleanup for Docker stale containers/images/volumes docker-cleanup.groovy

1.10 Groovy Basic

Name Comment
Get environment variables get-env.groovy
Groovy execute command execute-command.groovy
Print stdout print.groovy echo ‘Action is done’, println “Hello World”
Use boolean parameter if (istrue == “false”) {…}
Basic integer caculation def a = 3, b = 7; println “$a + $b = ${a + b}”
Run groovy online SaaS: Groovy Web console
Run groovy script from Jenkins Link: Jenkins Script Console
Reference Link: Apache Groovy

1.11 Groovy String/Regexp

Name Comment
Check string startsWith assert s.startsWith("\t")
Trim whitespaces s=s.trim()
Convert list to string l.join(";")
Create string with multi-lines multi-line-string.groovy
Convert string to list split-string.groovy
Convert string to json string-to-json.groovy
Remove tags input.replaceAll("\\<.*?>","")
Regex match regexp-match.groovy

1.12 Groovy Array

Name Comment
Iterate a list for(item in [1,2,3,4]){ println item }
Iterate a list (1..3).each { println "Number ${it}"}
Add item to list def alist = [10, 9, 8]; alist << 7
List size def alist = [10, 9, 8]; alist.size()
Split string with delimiter '1128-2'.tokenize( '-' )

1.13 Groovy File

Name Comment
Read file into a string String fileContents = new File('/tmp/test.txt).text
Read file content as a variable def env = System.getenv(), def content = readFile("/tmp/test.txt")
Write file in pipeline writeFile file: "output/my.txt", text: "This is a test"
Read and write json files json-file.groovy
Obtain a relative path relative-path.groovy

1.14 Groovy Dictionary

Name Comment
Create a map def m = ['fruit':'Apple', 'veggie':'Carrot']
Add an item to map m.put('denny','hello')
Check if key exists m.containsKey('key1')
Loop a map loop-map.groovy

1.15 Groovy json

Name Comment
Convert string to json string-to-json.groovy
Convert dictionary to json dict-to-json.groovy
Read and write json files json-file.groovy

1.16 Groovy Date

Name Comment
Date to string new Date().format("yyyy-MM-dd'T'HH:mm:ss'Z'", TimeZone.getTimeZone("UTC"))
String to date Date.parse("yyyy-MM-dd'T'HH:mm:ss'Z'", "2001-01-01T00:00:00Z")
String to date Date.parse("yyyy-MM-dd'T'HH:mm:ssZ", "2001-01-01T00:00:00+0000")

1.17 Jenkins Agent

Name Comment
Check jenkins slave jar version check-slave-jar-version.groovy
Find dead executors and remove them find-dead-executors.groovy
Set env for each agent set-agent-env.groovy

1.18 Jenkins Maintenance

Name Comment
Delete jenkins job by regexp delete-job-by-regexp.groovy
Deploy Jenkins via docker https://hub.docker.com/r/jenkins/jenkins/
Clean up old builds Link: CloudBees Best Strategy for Disk Space Management


Leave a Reply

Your email address will not be published. Required fields are marked *