Skip to content

Latest commit

 

History

History
1182 lines (1022 loc) · 72.2 KB

README.org

File metadata and controls

1182 lines (1022 loc) · 72.2 KB

1 CheatSheet: Jenkins & Groovy

linkedin
github
slack


PRs Welcome

File me Issues or star this repo.

1.1 Jenkins Pipeline

NameComment
Specify parameter to run jobsbuild job:'job1', parameters:[string(name:'name1', value:va1)]
Run job in different agentsnode($agent_label) {...}
Ask for user inputstage('stage2'){ input "OK to go?" }
Actively fail current pipeline joberror("Build failed because of this and that..")
Keep going when previous stage has failedkeep-going-with-errors.groovy
Send slack notification in pipelineslack-notification.groovy
Pass parameter across jenkins jobsjenkinsfile-pass-parameter.groovy
Set timeout & retryjenkinsfile-timeout-retry.groovy
Use finally to do cleanupjenkinsfile-finally.groovy
Run jenkins jobs in a sequential wayjenkinsfile-sequentially.groovy
Run jenkins jobs in paralleljenkinsfile-parallelly.groovy
ReferenceLink: Syntax Reference, Link: Jenkins User Documentation
ReferenceLink: Example, Link: Example

1.2 Config Jenkins Via Groovy

NameComment
Set timezone for jenkinstimezone.groovy
Configure default viewjenkins-views.groovy
Configure Jenkins urljenkins-url.groovy
Create a Jenkins usercreate-jenkins-user.groovy
Groovy manages files/foldersfiles-folder.groovy
Configure max executors in Jenkinsmaster-executors.groovy
Config jenkins kubernetes pluginjenkins-kubernetes-cloud.groovy
Configure slack pluginconfig-slack.groovy
ReferenceGitHub: cloudbees/jenkins-scripts, GitHub: jenkinsci/pipeline-examples

1.3 Jenkins Job Via Groovy

NameComment
List all jenkins jobsprintln Jenkins.instance.projects.collect { it.name }
Add a list of jobs by regexp to a viewaddjobstoview-byregexp.groovy
Create jenkins views and add jobs to itjenkins-views.groovy
Create and trigger a jobcreate-jenkins-job.groovy
Manage jenkins jobsmanage-jenkins-jobs.groovy
Cancel queued jenkins jobs by regexpkill-queued-jenkins.groovy

1.4 Jenkins Security Via Groovy

NameComment
logged-in users can do anythinglogged-in-users.groovy
Enable ldap in Jenkinsenable-ldap.groovy
Create a jenkins secret textcreate-secret-text.groovy
Configure authorization in Jenkinsmatrix-authorization-strategy.groovy
Jenkins skip wizzard when initialization-Djenkins.install.runSetupWizard=false

1.5 Load Jenkins settings via folder copy

NameComment
Add default jobsCopy jobs/ /usr/share/jenkins/ref/jobs/
Copy custom built pluginsCOPY plugins/*.hpi /usr/share/jenkins/ref/plugins/
Use jenkins cliCOPY config/jenkins.properties /usr/share/jenkins/ref/
Add jenkins groovy scriptsCOPY config/*.groovy /usr/share/jenkins/ref/init.groovy.d/
Configure Jenkins with some defaultsCOPY 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

PluginSummary
Kubernetes PluginJenkins plugin to run dynamic agents in a Kubernetes/Docker environment
Credentials PluginLoad the ssh key
SiteMonitor PluginMonitor URLs
Timestamper PluginAdd timestamp to job output
Dashboard View PluginCreate dashboard
Build-timeout PluginAbort if job takes too long
Naginator PluginRetry failed a job
ThinBackup PluginBackup jenkins
JobConfigHistory PluginBackup job configuration
Build User Vars PluginDescribe the user who started the build

1.7 Jenkins Git Via Groovy

NameComment
Git checkout codegit-checkout.groovy
Get all git commits since last successgit-commits-before-fail.groovy
List git tags and branchesgit-list-tags-and-branches.groovy

1.8 Jenkins networking Via Groovy

NameComment
Get hostnameprintln InetAddress.localHost.canonicalHostName
Get IP addressprintln InetAddress.localHost.hostAddress

1.9 Jenkins with Kubernetes/Docker

NameComment
Kubernetes PluginJenkins plugin to run dynamic agents in a Kubernetes/Docker environment
Config jenkins kubernetes pluginjenkins-kubernetes-cloud.groovy
Cleanup for Docker stale containers/images/volumesdocker-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

NameComment
Convert list to stringl.join(";")
Create string with multi-linesmulti-line-string.groovy
Convert string to listsplit-string.groovy
Convert string to jsonstring-to-json.groovy
Remove tagsinput.replaceAll("\\<.*?>","")
Regex matchregexp-match.groovy

1.12 Groovy Array

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

1.13 Groovy File

NameComment
Read file content as a variabledef env = System.getenv(), def content = readFile("/tmp/test.txt")
Read and write json filesjson-file.groovy
Obtain a relative pathrelative-path.groovy

1.14 Groovy Dictionary

NameComment
Create a mapdef m = ['fruit':'Apple', 'veggie':'Carrot']
Add an item to mapm.put('denny','hello')
Check if key existsm.containsKey('key1')
Loop a maploop-map.groovy

1.15 Groovy json

NameComment
Convert string to jsonstring-to-json.groovy
Convert dictionary to jsondict-to-json.groovy
Read and write json filesjson-file.groovy

1.16 Groovy Network

NameComment
Get hostname by ipget-ip-by-hostname.groovy
validate user input: ip addressassert ip_address.matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}")

1.17 Groovy Date

NameComment
Date to stringnew Date().format("yyyy-MM-dd'T'HH:mm:ss'Z'", TimeZone.getTimeZone("UTC"))
String to dateDate.parse("yyyy-MM-dd'T'HH:mm:ss'Z'", "2001-01-01T00:00:00Z")
String to dateDate.parse("yyyy-MM-dd'T'HH:mm:ssZ", "2001-01-01T00:00:00+0000")

1.18 Jenkins Agent

NameComment
Check jenkins slave jar versioncheck-slave-jar-version.groovy
Find dead executors and remove themfind-dead-executors.groovy

1.19 Jenkins Maintenance

NameComment
Delete jenkins job by regexpdelete-job-by-regexp.groovy
Deploy Jenkins via dockerhttps://hub.docker.com/r/jenkins/jenkins/
Clean up old buildsLink: CloudBees Best Strategy for Disk Space Management

1.20 More Resources

http://groovy-lang.org/documentation.html#gettingstarted

https://github.com/fabric8io/jenkins-docker

License: Code is licensed under MIT License.

linkedin github slack