11def NODE_NAME = ' AWS_Instance_CentOS'
22def MAIL_TO = ' $DEFAULT_RECIPIENTS'
3- def MAIL_SUBJECT = ' [CI PGSpider] SQLite FDW Test FAILED ' + BRANCH_NAME
4- def BUILD_INFO = ' Jenkins job: ' + env. BUILD_URL
53def BRANCH_NAME = ' Branch [' + env. BRANCH_NAME + ' ]'
4+ def BUILD_INFO = ' Jenkins job: ' + env. BUILD_URL + ' \n '
5+
6+ def POSTGRES_DOCKER_PATH = ' /home/jenkins/Docker/Server/Postgres'
7+ def ENHANCE_TEST_DOCKER_PATH = ' /home/jenkins/Docker'
8+ def TEST_TYPE = ' SQLITE'
9+
10+ START_EXISTED_TEST = ' '
11+ START_ENHANCE_TEST = ' '
12+ INIT_ENHANCE_TEST = ' '
613
7- def retrySh (String shCmd ) {
8- def MAX_RETRY = 10
9- script {
10- int status = 1 ;
11- for (int i = 0 ; i < MAX_RETRY ; i++ ) {
12- status = sh(returnStatus : true , script : shCmd)
13- if (status == 0 ) {
14- echo " SUCCESS: " + shCmd
15- break
16- } else {
17- echo " RETRY: " + shCmd
18- sleep 5
19- }
20- }
21- if (status != 0 ) {
22- sh(shCmd)
23- }
24- }
25- }
2614
2715pipeline {
2816 agent {
@@ -33,7 +21,7 @@ pipeline {
3321 options {
3422 gitLabConnection(' GitLabConnection' )
3523 }
36- triggers {
24+ triggers {
3725 gitlab(
3826 triggerOnPush : true ,
3927 triggerOnMergeRequest : false ,
@@ -46,76 +34,184 @@ pipeline {
4634 )
4735 }
4836 stages {
49- stage(' Build ' ) {
37+ stage(' Start_containers_Existed_Test ' ) {
5038 steps {
51- sh '''
52- rm -rf postgresql-13beta2 || true
53- tar -zxvf /home/jenkins/Postgres/postgresql-13beta2.tar.gz > /dev/null
54- cd postgresql-13beta2
55- ./configure --prefix=$(pwd)/install > /dev/null
56- make clean && make > /dev/null
57- '''
58- dir(" postgresql-13beta2/contrib" ) {
59- sh ' rm -rf sqlite_fdw || true'
60- retrySh(' git clone -b ' + env. GIT_BRANCH + ' ' + env. GIT_URL )
39+ script {
40+ if (env. GIT_URL != null ) {
41+ BUILD_INFO = BUILD_INFO + " Git commit: " + env. GIT_URL . replace(" .git" , " /commit/" ) + env. GIT_COMMIT + " \n "
42+ }
43+ }
44+ catchError() {
45+ sh """
46+ cd ${ POSTGRES_DOCKER_PATH}
47+ docker build -t postgresserver .
48+ docker run -d --name postgresserver_for_sqlite_existed_test postgresserver
49+ """
6150 }
6251 }
6352 post {
6453 failure {
65- echo ' ** BUILD FAILED !!! NEXT STAGE WILL BE SKIPPED **'
66- emailext subject : " ${ MAIL_SUBJECT} " , body : BUILD_INFO + " \n Git commit: " + env. GIT_URL . replace(" .git" , " /commit/" ) + env. GIT_COMMIT + " \n " + ' ${BUILD_LOG, maxLines=200, escapeHtml=false}' , to : " ${ MAIL_TO} " , attachLog : false
54+ script {
55+ START_EXISTED_TEST = ' FAILED'
56+ }
6757 updateGitlabCommitStatus name : ' Build' , state : ' failed'
6858 }
6959 success {
60+ script {
61+ START_EXISTED_TEST = ' SUCCESS'
62+ }
7063 updateGitlabCommitStatus name : ' Build' , state : ' success'
7164 }
7265 }
7366 }
74- stage(' sqlite_fdw_test ' ) {
67+ stage(' make_check_Existed_Test ' ) {
7568 steps {
76- dir(" postgresql-13beta2/contrib/sqlite_fdw" ) {
77- catchError() {
78- sh '''
79- chmod +x *.sh
80- ./test.sh
81- '''
69+ catchError() {
70+ sh """
71+ rm -rf make_check_existed_test.out || true
72+ docker exec postgresserver_for_sqlite_existed_test /bin/bash -c 'su -c "/tmp/sqlite_existed_test.sh ${ env.GIT_BRANCH} " postgres'
73+ docker cp postgresserver_for_sqlite_existed_test:/home/postgres/postgresql-13beta2/contrib/sqlite_fdw/make_check.out make_check_existed_test.out
74+ """
75+ }
76+ script {
77+ status = sh(returnStatus : true , script : " grep -q 'All [0-9]* tests passed' 'make_check_existed_test.out'" )
78+ if (status != 0 ) {
79+ unstable(message : " Set UNSTABLE result" )
80+ sh ' docker cp postgresserver_for_sqlite_existed_test:/home/postgres/postgresql-13beta2/contrib/sqlite_fdw/regression.diffs regression.diffs'
81+ sh ' cat regression.diffs || true'
82+ updateGitlabCommitStatus name : ' make_check' , state : ' failed'
83+ } else {
84+ updateGitlabCommitStatus name : ' make_check' , state : ' success'
8285 }
86+ }
87+ }
88+ }
89+ stage(' Start_containers_Enhance_Test' ) {
90+ steps {
91+ catchError() {
92+ sh """
93+ cd ${ ENHANCE_TEST_DOCKER_PATH}
94+ docker-compose up --build -d
95+ """
96+ }
97+ }
98+ post {
99+ failure {
83100 script {
84- status = sh(returnStatus : true , script : " grep -q 'All [0-9]* tests passed' 'make_check.out'" )
85- if (status != 0 ) {
86- unstable(message : " Set UNSTABLE result" )
87- emailext subject : " ${ MAIL_SUBJECT} " , body : BUILD_INFO + " \n Git commit: " + env. GIT_URL . replace(" .git" , " /commit/" ) + env. GIT_COMMIT + " \n " + ' ${FILE,path="make_check.out"}' , to : " ${ MAIL_TO} " , attachLog : false
88- sh ' cat regression.diffs || true'
89- updateGitlabCommitStatus name : ' sqlite_fdw_test' , state : ' failed'
90- } else {
91- updateGitlabCommitStatus name : ' sqlite_fdw_test' , state : ' success'
92- }
101+ START_ENHANCE_TEST = ' FAILED'
93102 }
103+ updateGitlabCommitStatus name : ' Build' , state : ' failed'
104+ }
105+ success {
106+ script {
107+ START_ENHANCE_TEST = ' SUCCESS'
108+ }
109+ updateGitlabCommitStatus name : ' Build' , state : ' success'
94110 }
95111 }
96112 }
97- stage(' sqlite_fdw_test_extra ' ) {
113+ stage(' Initialize_for_Enhance_Test ' ) {
98114 steps {
99- dir(" postgresql-13beta2/contrib/sqlite_fdw" ) {
100- catchError() {
101- sh '''
102- chmod +x *.sh
103- ./test_extra.sh
104- '''
115+ catchError() {
116+ sh """
117+ docker exec mysqlserver1_enhance_test /bin/bash -c '/tmp/start_enhance_test.sh'
118+ docker exec mysqlserver2_enhance_test /bin/bash -c '/tmp/start_enhance_test.sh'
119+ docker exec postgresserver1_enhance_test /bin/bash -c '/tmp/start_enhance_test_1.sh'
120+ docker exec postgresserver2_enhance_test /bin/bash -c '/tmp/start_enhance_test_2.sh'
121+ docker exec tinybraceserver1_enhance_test /bin/bash -c '/tmp/start_enhance_test_1.sh'
122+ docker exec -d -w /usr/local/tinybrace tinybraceserver1_enhance_test /bin/bash -c 'bin/tbserver &'
123+ docker exec tinybraceserver2_enhance_test /bin/bash -c '/tmp/start_enhance_test_2.sh'
124+ docker exec -d -w /usr/local/tinybrace tinybraceserver2_enhance_test /bin/bash -c 'bin/tbserver &'
125+ docker exec influxserver1_enhance_test /bin/bash -c '/tmp/start_enhance_test.sh'
126+ docker exec influxserver2_enhance_test /bin/bash -c '/tmp/start_enhance_test.sh'
127+ docker exec -d gridserver1_enhance_test /bin/bash -c '/tmp/start_enhance_test_1.sh'
128+ sleep 10
129+ docker exec -d gridserver2_enhance_test /bin/bash -c '/tmp/start_enhance_test_2.sh'
130+ sleep 10
131+ docker exec pgspiderserver1_enhance_test /bin/bash -c 'su -c "/tmp/start_enhance_test.sh ${ env.GIT_BRANCH} ${ TEST_TYPE} " pgspider'
132+ """
133+ }
134+ }
135+ post {
136+ failure {
137+ script {
138+ INIT_ENHANCE_TEST = ' FAILED'
105139 }
140+ updateGitlabCommitStatus name : ' Init_Data' , state : ' failed'
141+ }
142+ success {
106143 script {
107- status = sh(returnStatus : true , script : " grep -q 'All [0-9]* tests passed' 'make_check.out'" )
108- if (status != 0 ) {
109- unstable(message : " Set UNSTABLE result" )
110- emailext subject : " ${ MAIL_SUBJECT} " , body : BUILD_INFO + " \n Git commit: " + env. GIT_URL . replace(" .git" , " /commit/" ) + env. GIT_COMMIT + " \n " + ' ${FILE,path="make_check.out"}' , to : " ${ MAIL_TO} " , attachLog : false
111- sh ' cat regression.diffs || true'
112- updateGitlabCommitStatus name : ' sqlite_fdw_test_extra' , state : ' failed'
113- } else {
114- updateGitlabCommitStatus name : ' sqlite_fdw_test_extra' , state : ' success'
115- }
144+ INIT_ENHANCE_TEST = ' SUCCESS'
145+ }
146+ updateGitlabCommitStatus name : ' Init_Data' , state : ' success'
147+ }
148+ }
149+ }
150+ stage(' make_check_Enhance_Test' ) {
151+ steps {
152+ catchError() {
153+ sh """
154+ rm -rf make_check_enhance_test.out regression.diffs || true
155+ docker exec -w /home/pgspider/GIT/PGSpider/contrib/pgspider_core_fdw pgspiderserver1_enhance_test /bin/bash -c 'su -c "chmod a+x *.sh" pgspider'
156+ docker exec -w /home/pgspider/GIT/PGSpider/contrib/pgspider_core_fdw pgspiderserver1_enhance_test /bin/bash -c "sed -i 's/enhance\\\\\\\\\\/BasicFeature1_File_4ARG enhance\\\\\\\\\\/BasicFeature1_File_AllARG enhance\\\\\\\\\\/BasicFeature1_GridDB_4ARG enhance\\\\\\\\\\/BasicFeature1_GridDB_AllARG enhance\\\\\\\\\\/BasicFeature1_InfluxDB_4ARG enhance\\\\\\\\\\/BasicFeature1_InfluxDB_AllARG enhance\\\\\\\\\\/BasicFeature1_MySQL_4ARG enhance\\\\\\\\\\/BasicFeature1_MySQL_AllARG enhance\\\\\\\\\\/BasicFeature1_PostgreSQL_4ARG enhance\\\\\\\\\\/BasicFeature1_PostgreSQL_AllARG enhance\\\\\\\\\\/BasicFeature1_SQLite_4ARG enhance\\\\\\\\\\/BasicFeature1_SQLite_AllARG enhance\\\\\\\\\\/BasicFeature1_TinyBrace_4ARG enhance\\\\\\\\\\/BasicFeature1_TinyBrace_AllARG enhance\\\\\\\\\\/BasicFeature1_t_max_range enhance\\\\\\\\\\/BasicFeature1_tmp_t15_4ARG enhance\\\\\\\\\\/BasicFeature1_tmp_t15_AllARG enhance\\\\\\\\\\/BasicFeature2_JOIN_Multi_Tbl enhance\\\\\\\\\\/BasicFeature2_SELECT_Muli_Tbl enhance\\\\\\\\\\/BasicFeature2_UNION_Multi_Tbl enhance\\\\\\\\\\/BasicFeature_Additional_Test enhance\\\\\\\\\\/BasicFeature_ComplexCommand enhance\\\\\\\\\\/BasicFeature_For_Bug_54 enhance\\\\\\\\\\/BasicFeature_For_Bug_60/enhance\\\\\\\\\\/BasicFeature1_SQLite_4ARG enhance\\\\\\\\\\/BasicFeature1_SQLite_AllARG/g' test_enhance.sh"
157+ docker exec -w /home/pgspider/GIT/PGSpider/contrib/pgspider_core_fdw pgspiderserver1_enhance_test /bin/bash -c 'su -c "./test_enhance.sh" pgspider'
158+ docker cp pgspiderserver1_enhance_test:/home/pgspider/GIT/PGSpider/contrib/pgspider_core_fdw/make_check.out make_check_enhance_test.out
159+ """
160+ }
161+ script {
162+ status = sh(returnStatus : true , script : " grep -q 'All [0-9]* tests passed' 'make_check_enhance_test.out'" )
163+ if (status != 0 ) {
164+ unstable(message : " Set UNSTABLE result" )
165+ sh ' docker cp pgspiderserver1_enhance_test:/home/pgspider/GIT/PGSpider/contrib/pgspider_core_fdw/regression.diffs regression.diffs'
166+ sh ' cat regression.diffs || true'
167+ updateGitlabCommitStatus name : ' make_check' , state : ' failed'
168+ } else {
169+ updateGitlabCommitStatus name : ' make_check' , state : ' success'
116170 }
117171 }
118172 }
119173 }
120174 }
121- }
175+ post {
176+ success {
177+ script {
178+ prevResult = ' SUCCESS'
179+ if (currentBuild. previousBuild != null ) {
180+ prevResult = currentBuild. previousBuild. result. toString()
181+ }
182+ if (prevResult != ' SUCCESS' ) {
183+ emailext subject : ' [CI SQLITE_FDW] InfluxDB_Test BACK TO NORMAL on ' + BRANCH_NAME , body : BUILD_INFO + ' \n ---------EXISTED_TEST---------\n ' + ' ${FILE,path="make_check_existed_test.out"}' + ' \n ---------ENHANCE_TEST---------\n ' + ' ${FILE,path="make_check_enhance_test.out"}' , to : " ${ MAIL_TO} " , attachLog : false
184+ }
185+ }
186+ }
187+ unsuccessful {
188+ script {
189+ if (START_EXISTED_TEST == ' FAILED' ) {
190+ if (START_ENHANCE_TEST == ' FAILED' ) {
191+ emailext subject : ' [CI SQLITE_FDW] EXISTED_TEST: Start Containers FAILED | ENHANCE_TEST: Start Containers FAILED ' + BRANCH_NAME , body : BUILD_INFO + ' ${BUILD_LOG, maxLines=200, escapeHtml=false}' , to : " ${ MAIL_TO} " , attachLog : false
192+ } else if (INIT_ENHANCE_TEST == ' FAILED' ) {
193+ emailext subject : ' [CI SQLITE_FDW] EXISTED_TEST: Start Containers FAILED | ENHANCE_TEST: Initialize FAILED ' + BRANCH_NAME , body : BUILD_INFO + ' ${BUILD_LOG, maxLines=200, escapeHtml=false}' , to : " ${ MAIL_TO} " , attachLog : false
194+ } else {
195+ emailext subject : ' [CI SQLITE_FDW] EXISTED_TEST: Start Containers FAILED | ENHANCE_TEST: Result make check ' + BRANCH_NAME , body : BUILD_INFO + ' ${FILE,path="make_check_enhance_test.out"}' , to : " ${ MAIL_TO} " , attachLog : false
196+ }
197+ } else {
198+ if (START_ENHANCE_TEST == ' FAILED' ) {
199+ emailext subject : ' [CI SQLITE_FDW] EXISTED_TEST: Result make check | ENHANCE_TEST: Start Containers FAILED ' + BRANCH_NAME , body : BUILD_INFO + ' ${FILE,path="make_check_existed_test.out"}' , to : " ${ MAIL_TO} " , attachLog : false
200+ } else if (INIT_ENHANCE_TEST == ' FAILED' ) {
201+ emailext subject : ' [CI SQLITE_FDW] EXISTED_TEST: Result make check | ENHANCE_TEST: Initialize FAILED ' + BRANCH_NAME , body : BUILD_INFO + ' ${FILE,path="make_check_existed_test.out"}' , to : " ${ MAIL_TO} " , attachLog : false
202+ } else {
203+ emailext subject : ' [CI SQLITE_FDW] EXISTED_TEST: Result make check | ENHANCE_TEST: Result make check ' + BRANCH_NAME , body : BUILD_INFO + ' \n ---------EXISTED_TEST---------\n ' + ' ${FILE,path="make_check_existed_test.out"}' + ' \n ---------ENHANCE_TEST---------\n ' + ' ${FILE,path="make_check_enhance_test.out"}' , to : " ${ MAIL_TO} " , attachLog : false
204+ }
205+ }
206+ }
207+ }
208+ always {
209+ sh """
210+ docker stop postgresserver_for_sqlite_existed_test
211+ docker rm postgresserver_for_sqlite_existed_test
212+ cd ${ ENHANCE_TEST_DOCKER_PATH}
213+ docker-compose down
214+ """
215+ }
216+ }
217+ }
0 commit comments