source: Jenkins/TestRegen@ 436c0de

ADT aaron-thesis arm-eh ast-experimental cleanup-dtors deferred_resn demangler enum forall-pointer-decay jacob/cs343-translation jenkins-sandbox new-ast new-ast-unique-expr new-env no_list persistent-indexer pthread-emulation qualifiedEnum resolv-new with_gc
Last change on this file since 436c0de was f5dfc86, checked in by Thierry Delisle <tdelisle@…>, 8 years ago

Better printing in test regen

  • Property mode set to 100644
File size: 3.0 KB
RevLine 
[64bc131]1#!groovy
2
3node ('master') {
4
5 user_email = ''
6 test_list = ''
7
8 prepare_build()
9
10 try {
11
[ce34152]12 stage('Checkout') {
13 checkout scm
[5d41e22]14
15 sh 'git clean -xdf'
16
17 sh 'git reset --hard'
[ce34152]18 }
[64bc131]19
[ce34152]20 stage('Building x86') {
21 regen_tests('i386')
22 }
[64bc131]23
[ce34152]24 stage('Building x64') {
25 regen_tests('x86_64')
26 }
[64bc131]27
[ce34152]28 stage('Patching') {
29 make_patch()
30 }
[64bc131]31
[ce34152]32 stage('Email') {
33 email()
34 }
[64bc131]35 }
36 catch (Exception caughtError) {
37 email_error()
[c429ec2]38
39 throw caughtError
[64bc131]40 }
41}
42
43def prepare_build() {
44 properties ([ \
45 [$class: 'ParametersDefinitionProperty', \
46 parameterDefinitions: [ \
47 [$class: 'StringParameterDefinition', \
48 description: 'Who required the test', \
49 name: 'pEmail', \
50 ], \
51 [$class: 'StringParameterDefinition', \
52 description: 'Space separated list of tests to run', \
53 name: 'pTests', \
54 ], \
55 ],
56 ]])
57
58 user_email = pEmail;
59 test_list = pTests;
[f5dfc86]60
61 echo "User ${user_email} requested regenerating tests : ${ test_list }"
[64bc131]62}
63
64def regen_tests( String arch ) {
65
66 def install_dir = pwd tmp: true
67
68 //Configure the conpilation (Output is not relevant)
69 //Use the current directory as the installation target so nothing
70 //escapes the sandbox
71 //Also specify the compiler by hand
[eb220ca]72 sh "./configure CXX=clang++ --host=${arch} --with-backend-compiler=gcc-6 --prefix=${install_dir} --enable-silent-rules --quiet"
[64bc131]73
74 //Compile the project
75 sh 'make -j 8 --no-print-directory install'
76
77 //Regenerate the desired tests
78 sh "src/tests/test.py --regenerate-expected ${test_list}"
[c429ec2]79
80 //Clean everything from the last build
81 sh 'make maintainer-clean > /dev/null'
[64bc131]82}
83
84def make_patch() {
85
86 def target_dir = pwd tmp: true
87
88 //Add every file so new files appear in the diff
89 sh 'git add .'
90
91 //Create a patch file
92 sh "git diff --cached --binary > ${target_dir}/result.patch"
93}
94
95def email() {
96
[d0cf7409]97 def target_dir = pwd tmp: true
98
[c344406]99 dir( target_dir ) {
100
101 def email_subject = "[cforall dashboard][TEST REGEN# ${env.BUILD_NUMBER}] - Result"
102 def email_body = """This is an automated email from the Jenkins build machine. It was
[d8e14e39]103generated http://plg2:8082/dashboard.
104
105Please apply the required changes using the following method :
106 - copy result.patch to your cforall repository of choice.
107 - call 'git apply [patch file name]' (WARNING: the changes may conflict with any current changes to the test expected results).
108 - validate that the changes are correct.
109 - commit the changes as usual."""
[64bc131]110
[c344406]111 //send email notification
112 emailext body: email_body, subject: email_subject, to: user_email, attachmentsPattern: "**/*.patch"
113 }
[64bc131]114}
115
116def email_error() {
117
118 def email_subject = "[cforall dashboard][TEST REGEN# ${env.BUILD_NUMBER}] - FAILURE"
119 def email_body = """This is an automated email from the Jenkins build machine. It was
120generated http://plg2:8082/dashboard.
121
122Test generation encoutered an error please see attached logs
123
124-----------------------------------------------------------------------"""
125
126 //send email notification
127 emailext body: email_body, subject: email_subject, to: user_email, attachLog: true
128}
Note: See TracBrowser for help on using the repository browser.