@@ -101,6 +101,58 @@ void sanityTests(String type,String mlVersion){
101101 // jiraAddComment comment: 'Jenkins Sanity Test Results For PR Available', idOrKey: JIRA_ID, site: 'JIRA'
102102}
103103
104+ void PR_merge (){
105+ withCredentials([usernameColonPassword(credentialsId : ' 550650ab-ee92-4d31-a3f4-91a11d5388a3' , variable : ' Credentials' )]) {
106+ props = readProperties file :' data-hub/pipeline.properties' ;
107+ JIRA_ID = env. CHANGE_TITLE . split(' :' )[0 ]
108+ def response = sh (returnStdout : true , script :''' curl -u $Credentials --header "application/vnd.github.merge-info-preview+json" "''' + githubAPIUrl+ ''' /pulls/$CHANGE_ID" | grep '"mergeable_state":' | cut -d ':' -f2 | cut -d ',' -f1 | tr -d '"' ''' )
109+ response= response. trim();
110+ println (response)
111+ if (response. equals(" clean" )){
112+ println (" merging can be done" )
113+ sh " curl -o - -s -w \"\n %{http_code}\n\" -X PUT -d '{\" commit_title\" : \" $JIRA_ID : merging PR\" , \" merge_method\" : \" rebase\" }' -u $Credentials " + githubAPIUrl+ " /pulls/$CHANGE_ID /merge | tail -2 > mergeResult.txt"
114+ def mergeResult = readFile(' mergeResult.txt' ). trim()
115+ if (mergeResult== " 200" ){
116+ println (" Merge successful" )
117+ }else {
118+ println (" Merge Failed" )
119+ sh ' exit 1'
120+ }
121+ }else if (response. equals(" blocked" )){
122+ println (" retry blocked" );
123+ withCredentials([usernameColonPassword(credentialsId : ' 550650ab-ee92-4d31-a3f4-91a11d5388a3' , variable : ' Credentials' )]) {
124+ def reviewersList = sh (returnStdout : true , script :'''
125+ curl -u $Credentials -X GET ''' + githubAPIUrl+ ''' /pulls/$CHANGE_ID/requested_reviewers
126+ ''' )
127+ def slurper = new JsonSlurperClassic (). parseText(reviewersList. toString(). trim())
128+ def emailList= " " ;
129+ for (def user :slurper. users){
130+ email= getEmailFromGITUser user. login;
131+ emailList+ = email+ ' ,' ;
132+ }
133+ sendMail emailList,' Check the Pipeline View Here: ${JENKINS_URL}/blue/organizations/jenkins/Datahub_CI/detail/$JOB_BASE_NAME/$BUILD_ID \n\n\n Check Console Output Here: ${BUILD_URL}/console \n\n\n $BRANCH_NAME is waiting for the code-review to complete. Please click on proceed button if all the reviewers approved the code here. \n\n ${BUILD_URL}input ' ,false ,' Waiting for code review $BRANCH_NAME '
134+
135+ }
136+ sleep time : 30 , unit : ' MINUTES'
137+ throw new Exception (" Waiting for all the status checks to pass" );
138+ }else if (response. equals(" unstable" )){
139+ println (" retry unstable" )
140+ sh " curl -o - -s -w \"\n %{http_code}\n\" -X PUT -d '{\" commit_title\" : \" $JIRA_ID : merging PR\" , \" merge_method\" : \" rebase\" }' -u $Credentials " + githubAPIUrl+ " /pulls/$CHANGE_ID /merge | tail -2 > mergeResult.txt"
141+ def mergeResult = readFile(' mergeResult.txt' ). trim()
142+ if (mergeResult== " 200" ){
143+ println (" Merge successful" )
144+ }else {
145+ println (" Merge Failed" )
146+ sh ' exit 1'
147+ }
148+ println (" Result is" + mergeResult)
149+ }else {
150+ println (" merging not possible" )
151+ currentBuild. result = " FAILURE"
152+ sh ' exit 1' ;
153+ }
154+ }}
155+
104156pipeline{
105157 agent none;
106158 options {
@@ -277,60 +329,7 @@ pipeline{
277329 }
278330 agent {label ' dhmaster' };
279331 steps{
280- retry(5 ){
281- withCredentials([usernameColonPassword(credentialsId : ' 550650ab-ee92-4d31-a3f4-91a11d5388a3' , variable : ' Credentials' )]) {
282- script{
283- props = readProperties file :' data-hub/pipeline.properties' ;
284- JIRA_ID = env. CHANGE_TITLE . split(' :' )[0 ]
285- def response = sh (returnStdout : true , script :''' curl -u $Credentials --header "application/vnd.github.merge-info-preview+json" "''' + githubAPIUrl+ ''' /pulls/$CHANGE_ID" | grep '"mergeable_state":' | cut -d ':' -f2 | cut -d ',' -f1 | tr -d '"' ''' )
286- response= response. trim();
287- println (response)
288- if (response. equals(" clean" )){
289- println (" merging can be done" )
290- sh " curl -o - -s -w \"\n %{http_code}\n\" -X PUT -d '{\" commit_title\" : \" $JIRA_ID : merging PR\" , \" merge_method\" : \" rebase\" }' -u $Credentials " + githubAPIUrl+ " /pulls/$CHANGE_ID /merge | tail -2 > mergeResult.txt"
291- def mergeResult = readFile(' mergeResult.txt' ). trim()
292- if (mergeResult== " 200" ){
293- println (" Merge successful" )
294- }else {
295- println (" Merge Failed" )
296- sh ' exit 1'
297- }
298- }else if (response. equals(" blocked" )){
299- println (" retry blocked" );
300- withCredentials([usernameColonPassword(credentialsId : ' 550650ab-ee92-4d31-a3f4-91a11d5388a3' , variable : ' Credentials' )]) {
301- def reviewersList = sh (returnStdout : true , script :'''
302- curl -u $Credentials -X GET ''' + githubAPIUrl+ ''' /pulls/$CHANGE_ID/requested_reviewers
303- ''' )
304- def slurper = new JsonSlurperClassic (). parseText(reviewersList. toString(). trim())
305- def emailList= " " ;
306- for (def user :slurper. users){
307- email= getEmailFromGITUser user. login;
308- emailList+ = email+ ' ,' ;
309- }
310- sendMail emailList,' Check the Pipeline View Here: ${JENKINS_URL}/blue/organizations/jenkins/Datahub_CI/detail/$JOB_BASE_NAME/$BUILD_ID \n\n\n Check Console Output Here: ${BUILD_URL}/console \n\n\n $BRANCH_NAME is waiting for the code-review to complete. Please click on proceed button if all the reviewers approved the code here. \n\n ${BUILD_URL}input ' ,false ,' Waiting for code review $BRANCH_NAME '
311-
312- }
313- sleep time : 30 , unit : ' MINUTES'
314- throw new Exception (" Waiting for all the status checks to pass" );
315- }else if (response. equals(" unstable" )){
316- println (" retry unstable" )
317- sh " curl -o - -s -w \"\n %{http_code}\n\" -X PUT -d '{\" commit_title\" : \" $JIRA_ID : merging PR\" , \" merge_method\" : \" rebase\" }' -u $Credentials " + githubAPIUrl+ " /pulls/$CHANGE_ID /merge | tail -2 > mergeResult.txt"
318- def mergeResult = readFile(' mergeResult.txt' ). trim()
319- if (mergeResult== " 200" ){
320- println (" Merge successful" )
321- }else {
322- println (" Merge Failed" )
323- sh ' exit 1'
324- }
325- println (" Result is" + mergeResult)
326- }else {
327- println (" merging not possible" )
328- currentBuild. result = " FAILURE"
329- sh ' exit 1' ;
330- }
331- }
332- }
333- }
332+ retry(5 ){PR_merge ()}
334333 }
335334 post{
336335 success {
0 commit comments