Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Jenkinsfile

    rafab6dc rab60d6d  
    3535}
    3636
    37 def push_build() {
    38         //Don't use the build_stage function which outputs the compiler
    39         stage 'Push'
    40 
    41                 status_prefix = 'Push'
    42 
    43                 def out_dir = pwd tmp: true
    44                 sh "mkdir -p ${out_dir}"
    45 
    46                 //parse git logs to find what changed
    47                 sh "git remote > ${out_dir}/GIT_REMOTE"
    48                 git_remote = readFile("${out_dir}/GIT_REMOTE")
    49                 remoteDoLangExists = git_remote.contains("DoLang")
    50 
    51                 if( !remoteDoLangExists ) {
    52                         sh 'git remote add DoLang git@gitlab.do-lang.org:internal/cfa-cc.git'
    53                 }
    54 
    55                 sh "git push DoLang ${gitRefNewValue}:master"
    56 }
    57 
    5837//===========================================================================================================
    5938// Helper classes/variables/routines to make the status and stage name easier to use
     
    8867def collect_git_info() {
    8968
    90         //create the temporary output directory in case it doesn't already exist
    9169        def out_dir = pwd tmp: true
    92         sh "mkdir -p ${out_dir}"
    93 
    94         //parse git logs to find what changed
    9570        gitRefName = env.BRANCH_NAME
    9671        dir("../${gitRefName}@script") {
     
    10782node ('master'){
    10883
    109         boolean doPromoteBuild2DoLang
    11084        def err = null
    11185        def log_needed = false
     
    12296                                collect_git_info()
    12397
    124                                 properties ([                                                                   \
    125                                         [$class: 'ParametersDefinitionProperty',                                \
    126                                                 parameterDefinitions: [                                         \
    127                                                 [$class: 'BooleanParameterDefinition',                          \
    128                                                   defaultValue: false,                                          \
    129                                                   description: 'If true, the build will be promoted to the do-lang git repository (on successful builds only)', \
    130                                                   name: 'promoteBuild2DoLang'                           \
    131                                                 ]]                                                                      \
    132                                         ]])
    133 
    134                                 doPromoteBuild2DoLang = promoteBuild2DoLang == 'true'
    135 
    136                                 echo "FULL BUILD = ${doPromoteBuild2DoLang}"
    137 
    13898                                //Compile using gcc-4.9
    13999                                currentCC = new CC_Desc('gcc-4.9', 'g++-4.9', 'gcc-4.9')
     
    148108                                cfa_build()
    149109
    150                                 if( doPromoteBuild2DoLang ) {
    151                                         push_build()
    152                                 }
    153110                        }
    154111                }
     
    170127        finally {
    171128                //Send email with final results
    172                 notify_result(doPromoteBuild2DoLang, err, currentBuild.result, log_needed)
     129                email(currentBuild.result, log_needed)
    173130
    174131                /* Must re-throw exception to propagate error */
     
    182139//Routine responsible of sending the email notification once the build is completed
    183140//===========================================================================================================
    184 def notify_result(boolean promote, Exception err, String status, boolean log) {
    185         if(promote)     {
    186                 if( err ) {
    187                         promote_email(status)
    188                 }
    189         }
    190         else {
    191                 email(status, log)
    192         }
    193 }
    194 
    195 //Email notification on a full build failure
    196 def promote_email(String status) {
    197         //Since tokenizer doesn't work, figure stuff out from the environnement variables and command line
    198         //Configurations for email format
    199         def email_subject = "[cforall git][PROMOTE - FAILURE]"
    200         def email_body = """This is an automated email from the Jenkins build machine. It was
    201 generated because of a git hooks/post-receive script following
    202 a ref change was pushed to the repository containing
    203 the project "UNNAMED PROJECT".
    204 
    205 Check console output at ${env.BUILD_URL} to view the results.
    206 
    207 - Status --------------------------------------------------------------
    208 
    209 PROMOTE FAILURE - ${status}
    210 """
    211 
    212         def email_to = "pabuhr@uwaterloo.ca, rschlunt@uwaterloo.ca, a3moss@uwaterloo.ca, tdelisle@uwaterloo.ca, brice.dobry@huawei.com"
    213 
    214         //send email notification
    215         emailext body: email_body, subject: email_subject, to: email_to, attachLog: true
    216 }
    217 
    218 //Standard build email notification
    219141def email(String status, boolean log) {
    220142        //Since tokenizer doesn't work, figure stuff out from the environnement variables and command line
     
    235157
    236158The branch ${env.BRANCH_NAME} has been updated.
    237   via  ${gitRefOldValue} (commit)
    238   from  ${gitRefNewValue} (commit)
     159        via  ${gitRefOldValue} (commit)
     160        from  ${gitRefNewValue} (commit)
    239161
    240162Check console output at ${env.BUILD_URL} to view the results.
Note: See TracChangeset for help on using the changeset viewer.