#!groovy node ('master') { user_email = '' test_list = '' prepare_build() try { checkout scm regen_tests('i386') regen_tests('x86_64') make_patch() email() } catch (Exception caughtError) { email_error() throw caughtError } } def prepare_build() { properties ([ \ [$class: 'ParametersDefinitionProperty', \ parameterDefinitions: [ \ [$class: 'StringParameterDefinition', \ description: 'Who required the test', \ name: 'pEmail', \ choices: 'gcc-6\ngcc-5\ngcc-4.9\nclang', \ defaultValue: 'gcc-6', \ ], \ [$class: 'StringParameterDefinition', \ description: 'Space separated list of tests to run', \ name: 'pTests', \ ], \ ], ]]) user_email = pEmail; test_list = pTests; } def regen_tests( String arch ) { def install_dir = pwd tmp: true //Configure the conpilation (Output is not relevant) //Use the current directory as the installation target so nothing //escapes the sandbox //Also specify the compiler by hand sh "./configure CXX=clang++ ${arch} --with-backend-compiler=${gcc-6} --prefix=${install_dir} --enable-silent-rules --quiet" //Compile the project sh 'make -j 8 --no-print-directory install' //Regenerate the desired tests sh "src/tests/test.py --regenerate-expected ${test_list}" //Clean everything from the last build sh 'make maintainer-clean > /dev/null' } def make_patch() { def target_dir = pwd tmp: true //Add every file so new files appear in the diff sh 'git add .' //Create a patch file sh "git diff --cached --binary > ${target_dir}/result.patch" } def email() { def target_dir = pwd tmp: true def email_subject = "[cforall dashboard][TEST REGEN# ${env.BUILD_NUMBER}] - Result" def email_body = """This is an automated email from the Jenkins build machine. It was generated http://plg2:8082/dashboard.""" //send email notification emailext body: email_body, subject: email_subject, to: user_email, attachmentsPattern: '${target_dir}/result.patch' } def email_error() { def target_dir = pwd tmp: true def email_subject = "[cforall dashboard][TEST REGEN# ${env.BUILD_NUMBER}] - FAILURE" def email_body = """This is an automated email from the Jenkins build machine. It was generated http://plg2:8082/dashboard. Test generation encoutered an error please see attached logs -----------------------------------------------------------------------""" //send email notification emailext body: email_body, subject: email_subject, to: user_email, attachLog: true }