source: Jenkins/tools.groovy@ 1ac1f0b

ADT arm-eh ast-experimental enum forall-pointer-decay jacob/cs343-translation new-ast-unique-expr pthread-emulation qualifiedEnum
Last change on this file since 1ac1f0b was 6c9e0bc, checked in by Thierry Delisle <tdelisle@…>, 5 years ago

Removed infinite recursion

  • Property mode set to 100644
File size: 3.1 KB
Line 
1#!groovy
2
3import groovy.transform.Field
4
5// For skipping stages
6import org.jenkinsci.plugins.pipeline.modeldefinition.Utils
7
8// Global for the stage name
9StageName = ''
10
11// wrapper around stage declaretion to be more verbose
12// and allow showing as skipped in the UI
13def BuildStage(String name, boolean run, Closure block ) {
14 StageName = name
15 echo " -------- ${StageName} -------- "
16 if(run) {
17 stage(name, block)
18 } else {
19 stage(name) { Utils.markStageSkippedForConditional(STAGE_NAME) }
20 }
21}
22
23//===========================================================================================================
24// Common compilation routines
25//===========================================================================================================
26def Clean() {
27 BuildStage('Cleanup', true) {
28 // clean the build by wipping the build directory
29 dir(BuildDir) {
30 deleteDir()
31 }
32 }
33}
34
35def Checkout(commitHash = null) {
36 BuildStage('Checkout', true) {
37 //checkout the source code and clean the repo
38 if(commitHash) {
39 final scmVars = checkout([$class: 'GitSCM', branches: [[name: commitHash ]]])
40 echo GitLogMessage(scmVars.GIT_COMMIT, scmVars.GIT_PREVIOUS_COMMIT)
41 } else {
42
43 final scmVars = checkout scm
44 echo GitLogMessage(scmVars.GIT_COMMIT, scmVars.GIT_PREVIOUS_COMMIT)
45 }
46 }
47}
48
49//===========================================================================================================
50//Routine responsible of sending the email notification once the build is completed
51//===========================================================================================================
52@NonCPS
53def SplitLines(String text) {
54 def list = []
55
56 text.eachLine {
57 list += it
58 }
59
60 return list
61}
62
63def GitLogMessage(String oldRef, String newRef) {
64 def revText = sh(returnStdout: true, script: "git rev-list ${oldRef}..${newRef}").trim()
65 def revList = SplitLines( revText )
66
67 def gitUpdate = ""
68 revList.each { rev ->
69 def type = sh(returnStdout: true, script: "git cat-file -t ${rev}").trim()
70 gitUpdate = gitUpdate + " via ${rev} (${type})"
71 }
72
73 def rev = oldRef
74 def type = sh(returnStdout: true, script: "git cat-file -t ${rev}").trim()
75 gitUpdate = gitUpdate + " from ${rev} (${type})"
76
77 def gitLog = sh(returnStdout: true, script: "git rev-list --format=short ${oldRef}...${newRef}").trim()
78
79 def gitDiff = sh(returnStdout: true, script: "git diff --stat --color ${newRef} ${oldRef}").trim()
80 gitDiff = gitDiff.replace('[32m', '<span style="color: #00AA00;">')
81 gitDiff = gitDiff.replace('[31m', '<span style="color: #AA0000;">')
82 gitDiff = gitDiff.replace('[m', '</span>')
83
84 return """
85<pre>
86The branch ${env.BRANCH_NAME} has been updated.
87${gitUpdate}
88</pre>
89
90<p>Check console output at ${env.BUILD_URL} to view the results.</p>
91
92<p>- Status --------------------------------------------------------------</p>
93
94<p>BUILD# ${env.BUILD_NUMBER} - ${currentBuild.result}</p>
95
96<p>- Log -----------------------------------------------------------------</p>
97
98<pre>
99${gitLog}
100</pre>
101
102<p>-----------------------------------------------------------------------</p>
103<pre>
104Summary of changes:
105${gitDiff}
106</pre>
107"""
108}
109
110return this;
Note: See TracBrowser for help on using the repository browser.