1010
1111import org .jenkinsci .plugins .workflow .steps .StepContext ;
1212import org .jenkinsci .plugins .workflow .steps .SynchronousStepExecution ;
13+
1314import hudson .model .Run ;
1415import io .jenkins .plugins .DevOpsRunListener ;
1516import io .jenkins .plugins .DevOpsRunStatusAction ;
@@ -37,28 +38,33 @@ public DevOpsPipelineChangeInfoStep getStep() {
3738
3839 @ Override
3940 protected String run () throws Exception {
40- Run <?, ?> run = getContext ().get (Run .class );
41- String pronoun = run .getParent ().getPronoun ();
42- boolean isPullRequestPipeline = pronoun .equalsIgnoreCase (DevOpsConstants .PULL_REQUEST_PRONOUN .toString ());
43- DevOpsModel model = new DevOpsModel ();
44- boolean pipelineTrack = model .checkIsTrackingCache (run .getParent (), run .getId ());
45- TaskListener listener = getContext ().get (TaskListener .class );
46- DevOpsConfiguration devopsConfig = DevOpsConfiguration .get ();
47- return getChangeRequestNumber (run , isPullRequestPipeline , pipelineTrack , listener , devopsConfig , this .getStep ().getChangeDetails ());
48-
41+ try {
42+ Run <?, ?> run = getContext ().get (Run .class );
43+ String pronoun = run .getParent ().getPronoun ();
44+ boolean isPullRequestPipeline = pronoun .equalsIgnoreCase (DevOpsConstants .PULL_REQUEST_PRONOUN .toString ());
45+ DevOpsModel model = new DevOpsModel ();
46+ boolean pipelineTrack = model .checkIsTrackingCache (run .getParent (), run .getId ());
47+ TaskListener listener = getContext ().get (TaskListener .class );
48+ DevOpsConfiguration devopsConfig = DevOpsConfiguration .get ();
49+ return getChangeRequestNumber (run , isPullRequestPipeline , pipelineTrack , listener , devopsConfig , this .getStep ().getChangeDetails ());
50+ } catch (Exception e ) {
51+ TaskListener listener = getContext ().get (TaskListener .class );
52+ listener .getLogger ().println ("[ServiceNow DevOps] Error occurred while running snDevOpsGetChangeNumber, Exception: " + e .getMessage ());
53+ throw e ;
54+ }
4955 }
5056
5157 private String getChangeRequestNumber (Run <?, ?> run , boolean isPullRequestPipeline , boolean pipelineTrack , TaskListener listener , DevOpsConfiguration devopsConfig , String changeDetails ) {
52- listener .getLogger ().println (currentJenkinsStepName + " ChangeDetails => " + changeDetails );
58+ listener .getLogger ().println (currentJenkinsStepName + " ChangeDetails => " + changeDetails );
5359 String changeRequestNumber ;
5460 if (GenericUtils .isNotEmpty (changeDetails )) {
5561 changeRequestNumber = getChangeRequestNumberFromChangeDetails (run , isPullRequestPipeline , pipelineTrack , listener , devopsConfig , changeDetails );
56- }else {
57- listener .getLogger ().println (currentJenkinsStepName + " No changeDetails provided, checking for change in current stage" );
62+ } else {
63+ listener .getLogger ().println (currentJenkinsStepName + " No changeDetails provided, checking for change in current stage" );
5864 changeRequestNumber = getChangeRequestNumberFromStageName (run , isPullRequestPipeline , pipelineTrack , listener , devopsConfig , "" );
5965 }
60- if (GenericUtils .isNotEmpty (changeRequestNumber )){
61- listener .getLogger ().println (currentJenkinsStepName + " 'Change Request Number' => " + changeRequestNumber );
66+ if (GenericUtils .isNotEmpty (changeRequestNumber )) {
67+ listener .getLogger ().println (currentJenkinsStepName + " 'Change Request Number' => " + changeRequestNumber );
6268 }
6369 return changeRequestNumber ;
6470 }
@@ -71,20 +77,20 @@ private String getChangeRequestNumberFromChangeDetails(Run<?, ?> run, boolean is
7177 String stageName = (String ) changeDetailsJSON .get ("stage_name" );
7278 String pipelineName = (String ) changeDetailsJSON .get ("pipeline_name" );
7379 //Change Details validation
74- if (GenericUtils .isEmpty (buildNumber ) || GenericUtils .isEmpty (pipelineName ) || GenericUtils .isEmpty (stageName )) {
75- if (GenericUtils .isEmpty (buildNumber ) && GenericUtils .isNotEmpty (stageName )) {//To Fetch ChangeRequestNumber from same pipeline but mentioned stage name
80+ if (GenericUtils .isEmpty (buildNumber ) || GenericUtils .isEmpty (pipelineName ) || GenericUtils .isEmpty (stageName )) {
81+ if (GenericUtils .isEmpty (buildNumber ) && GenericUtils .isNotEmpty (stageName )) {//To Fetch ChangeRequestNumber from same pipeline but mentioned stage name
7682 return getChangeRequestNumberFromStageName (run , isPullRequestPipeline , pipelineTrack , listener , devopsConfig , stageName );
7783 }
7884
79- listener .getLogger ().print (currentJenkinsStepName + " Couldn't get 'Change Request Number'. Please provide" );
85+ listener .getLogger ().print (currentJenkinsStepName + " Couldn't get 'Change Request Number'. Please provide" );
8086
81- if (GenericUtils .isEmpty (pipelineName ))
87+ if (GenericUtils .isEmpty (pipelineName ))
8288 listener .getLogger ().print (" Pipeline Name," );
8389
84- if (GenericUtils .isEmpty (buildNumber ))
90+ if (GenericUtils .isEmpty (buildNumber ))
8591 listener .getLogger ().print (" Build Number," );
8692
87- if (GenericUtils .isEmpty (stageName ))
93+ if (GenericUtils .isEmpty (stageName ))
8894 listener .getLogger ().print (" Stage Name" );
8995
9096 listener .getLogger ().println ("." );
@@ -97,33 +103,33 @@ private String getChangeRequestNumberFromChangeDetails(Run<?, ?> run, boolean is
97103 params .put (DevOpsConstants .ARTIFACT_PIPELINE_NAME .toString (), pipelineName );
98104 params .put (DevOpsConstants .SCM_BRANCH_NAME .toString (), branchName );
99105 params .put (DevOpsConstants .TOOL_ID_ATTR .toString (), devopsConfig .getToolId ());
100- JSONObject responseJSON = null ;
106+ JSONObject responseJSON = null ;
101107 if (!GenericUtils .isEmptyOrDefault (devopsConfig .getSecretCredentialId ())) {
102108 Map <String , String > tokenDetails = new HashMap <String , String >();
103109 tokenDetails .put (DevOpsConstants .TOKEN_VALUE .toString (),
104110 devopsConfig .getTokenText (devopsConfig .getSecretCredentialId ()));
105111
106112 responseJSON = CommUtils .callV2Support (DevOpsConstants .REST_GET_METHOD .toString (), devopsConfig .getChangeInfoUrl (),
107- params , null , devopsConfig .getUser (), devopsConfig .getPwd (), null , null ,tokenDetails );
113+ params , null , devopsConfig .getUser (), devopsConfig .getPwd (), null , null , tokenDetails );
108114 } else {
109115 responseJSON = CommUtils .call (DevOpsConstants .REST_GET_METHOD .toString (), devopsConfig .getChangeInfoUrl (),
110116 params , null , devopsConfig .getUser (), devopsConfig .getPwd (), null , null );
111117 }
112-
118+
113119 return parseResponseResult (listener , responseJSON );
114120 }
115121
116122 private String parseResponseResult (TaskListener listener , JSONObject responseJSON ) {
117- if (null != responseJSON ) {
123+ if (null != responseJSON ) {
118124 if (responseJSON .containsKey (DevOpsConstants .COMMON_RESPONSE_RESULT .toString ())) {
119125 JSONObject resultJSON = responseJSON .getJSONObject (DevOpsConstants .COMMON_RESPONSE_RESULT .toString ());
120126 if (resultJSON .containsKey (DevOpsConstants .COMMON_RESPONSE_NUMBER .toString ())) {
121127 return resultJSON .getString (DevOpsConstants .COMMON_RESPONSE_NUMBER .toString ());
122128 } else if (resultJSON .containsKey (DevOpsConstants .COMMON_RESPONSE_ERROR_MESSAGE .toString ())) {
123- listener .getLogger ().println (currentJenkinsStepName + " Couldn't get 'Change Request Number', " + resultJSON .getString (DevOpsConstants .COMMON_RESPONSE_ERROR_MESSAGE .toString ()));
129+ listener .getLogger ().println (currentJenkinsStepName + " Couldn't get 'Change Request Number', " + resultJSON .getString (DevOpsConstants .COMMON_RESPONSE_ERROR_MESSAGE .toString ()));
124130 }
125131 } else if (responseJSON .containsKey (DevOpsConstants .COMMON_RESULT_ERROR .toString ())) {
126- listener .getLogger ().println (currentJenkinsStepName + " Couldn't get 'Change Request Number', " + responseJSON .getJSONObject (DevOpsConstants .COMMON_RESULT_ERROR .toString ()).getString (DevOpsConstants .COMMON_RESPONSE_MESSAGE .toString ()));
132+ listener .getLogger ().println (currentJenkinsStepName + " Couldn't get 'Change Request Number', " + responseJSON .getJSONObject (DevOpsConstants .COMMON_RESULT_ERROR .toString ()).getString (DevOpsConstants .COMMON_RESPONSE_MESSAGE .toString ()));
127133 }
128134 }
129135 return null ;
@@ -143,7 +149,7 @@ private String parseResponseResult(TaskListener listener, JSONObject responseJSO
143149 private String getChangeRequestNumberFromStageName (Run <?, ?> run , boolean isPullRequestPipeline , boolean pipelineTrack , TaskListener listener , DevOpsConfiguration devopsConfig , String stageName ) {
144150 if (pipelineTrack && ((isPullRequestPipeline && devopsConfig .isTrackPullRequestPipelinesCheck ()) || (!isPullRequestPipeline ))) {
145151 DevOpsRunStatusAction runStatusAction = run .getAction (DevOpsRunStatusAction .class );
146- if (!stageName .isEmpty ()){
152+ if (!stageName .isEmpty ()) {
147153 return runStatusAction .changeRequestInfo .get (stageName );
148154 }
149155 if (runStatusAction != null ) {
@@ -155,8 +161,8 @@ private String getChangeRequestNumberFromStageName(Run<?, ?> run, boolean isPull
155161 }
156162 }
157163 }
158- }else {
159- listener .getLogger ().println (currentJenkinsStepName + " Please enable 'Pipeline Track' to fetch 'Change Request Number' using 'Stage Name'." );
164+ } else {
165+ listener .getLogger ().println (currentJenkinsStepName + " Please enable 'Pipeline Track' to fetch 'Change Request Number' using 'Stage Name'." );
160166 }
161167 return null ;
162168 }
0 commit comments