Changeset 6066e32 for Jenkinsfile
- Timestamp:
- Jul 13, 2016, 11:14:01 AM (8 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
- Children:
- 834d4fc
- Parents:
- 7d5e243 (diff), ed9ecda (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Jenkinsfile
r7d5e243 r6066e32 2 2 3 3 //=========================================================================================================== 4 // Main compilation routine 4 // Main compilation routines 5 5 //=========================================================================================================== 6 6 //Compilation script is done here but environnement set-up and error handling is done in main loop … … 83 83 } 84 84 85 def push_build() {86 //Don't use the build_stage function which outputs the compiler87 stage 'Push'88 89 status_prefix = 'Push'90 91 def out_dir = pwd tmp: true92 sh "mkdir -p ${out_dir}"93 94 //parse git logs to find what changed95 sh "git remote > ${out_dir}/GIT_REMOTE"96 git_remote = readFile("${out_dir}/GIT_REMOTE")97 remoteDoLangExists = git_remote.contains("DoLang")98 99 if( !remoteDoLangExists ) {100 sh 'git remote add DoLang git@gitlab.do-lang.org:internal/cfa-cc.git'101 }102 103 sh "git push DoLang ${gitRefNewValue}:master"104 }105 106 85 //=========================================================================================================== 107 86 // Helper classes/variables/routines to make the status and stage name easier to use … … 155 134 node ('master'){ 156 135 157 boolean doPromoteBuild2DoLang136 boolean bIsFullBuild 158 137 def err = null 159 138 def log_needed = false … … 176 155 defaultValue: false, \ 177 156 description: 'If true, the build will be promoted to the do-lang git repository (on successful builds only)', \ 178 name: ' promoteBuild2DoLang' \157 name: 'isFullBuild' \ 179 158 ], \ 180 159 [$class: 'ChoiceParameterDefinition', \ … … 186 165 ]]) 187 166 188 doPromoteBuild2DoLang = promoteBuild2DoLang== 'true'167 bIsFullBuild = isFullBuild == 'true' 189 168 architectureFlag = buildArchitecture == '64-bit' ? '-m64' : (buildArchitecture == '32-bit' ? '-m32' : 'ERROR') 190 169 191 echo "FULL BUILD = ${ doPromoteBuild2DoLang}\nArchitecture = ${buildArchitecture} (flag ${architectureFlag})"170 echo "FULL BUILD = ${isFullBuild}\nArchitecture = ${buildArchitecture} (flag ${architectureFlag})" 192 171 193 172 //Compile using gcc-4.9 194 173 currentCC = new CC_Desc('gcc-4.9', 'g++-4.9', 'gcc-4.9') 195 cfa_build( doPromoteBuild2DoLang, architectureFlag)174 cfa_build(bIsFullBuild, architectureFlag) 196 175 197 176 //Compile latex documentation 198 177 doc_build() 199 178 200 if( doPromoteBuild2DoLang) {179 if( bIsFullBuild ) { 201 180 //Compile using gcc-5 202 181 currentCC = new CC_Desc('gcc-5', 'g++-5', 'gcc-5') … … 206 185 currentCC = new CC_Desc('gcc-6', 'g++-6', 'gcc-6') 207 186 cfa_build(true, architectureFlag) 208 209 //Push latest changes to do-lang repo210 push_build()211 187 } 212 188 } … … 228 204 229 205 finally { 230 //Send email with final results 231 notify_result(doPromoteBuild2DoLang, err, currentBuild.result, log_needed) 206 echo 'Build Completed' 207 208 //Send email with final results if this is not a full build 209 if( !bIsFullBuild ) { 210 echo 'Notifying users of result' 211 email(currentBuild.result, log_needed) 212 } 232 213 233 214 /* Must re-throw exception to propagate error */ … … 241 222 //Routine responsible of sending the email notification once the build is completed 242 223 //=========================================================================================================== 243 def notify_result(boolean promote, Exception err, String status, boolean log) {244 echo 'Build completed, sending result notification'245 if(promote) {246 if( err ) {247 promote_email(status)248 }249 }250 else {251 email(status, log)252 }253 }254 255 //Email notification on a full build failure256 def promote_email(String status) {257 //Since tokenizer doesn't work, figure stuff out from the environnement variables and command line258 //Configurations for email format259 def email_subject = "[cforall git][PROMOTE - FAILURE]"260 def email_body = """This is an automated email from the Jenkins build machine. It was261 generated because of a git hooks/post-receive script following262 a ref change was pushed to the repository containing263 the project "UNNAMED PROJECT".264 265 Check console output at ${env.BUILD_URL} to view the results.266 267 - Status --------------------------------------------------------------268 269 PROMOTE FAILURE - ${status}270 """271 272 def email_to = "pabuhr@uwaterloo.ca, rschlunt@uwaterloo.ca, a3moss@uwaterloo.ca, tdelisle@uwaterloo.ca, brice.dobry@huawei.com"273 274 //send email notification275 emailext body: email_body, subject: email_subject, to: email_to, attachLog: true276 }277 278 224 //Standard build email notification 279 225 def email(String status, boolean log) {
Note: See TracChangeset
for help on using the changeset viewer.