@@ -27994,35 +27994,34 @@ async function createChange({
2799427994 deploymentGateStr
2799527995}) {
2799627996
27997- console.log('Calling Change Control API to create change....');
27997+ console.log('[ServiceNow DevOps] Calling Change Control API to create change....');
2799827998
2799927999 let changeRequestDetails;
2800028000 let deploymentGateDetails;
2800128001 let githubContext;
2800228002 let payload;
2800328003 let postendpoint = '';
2800428004 let response;
28005- let status = false;
2800628005
2800728006 try {
2800828007 changeRequestDetails = JSON.parse(changeRequestDetailsStr);
2800928008 } catch (e) {
28010- console.log(` Error occured with message ${e}`);
28009+ displayErrorMsg(`[ServiceNow DevOps] Error occured with message ${e}`);
2801128010 throw new Error("Failed parsing changeRequestDetails");
2801228011 }
2801328012
2801428013 try {
2801528014 if (deploymentGateStr)
2801628015 deploymentGateDetails = JSON.parse(deploymentGateStr);
2801728016 } catch (e) {
28018- console.log(` Error occured with message ${e}`);
28017+ displayErrorMsg(`[ServiceNow DevOps] Error occured with message ${e}`);
2801928018 throw new Error("Failed parsing deploymentGateDetails");
2802028019 }
2802128020
2802228021 try {
2802328022 githubContext = JSON.parse(githubContextStr);
2802428023 } catch (e) {
28025- console.log(` Error occured with message ${e}`);
28024+ displayErrorMsg(`[ServiceNow DevOps] Error occured with message ${e}`);
2802628025 throw new Error("Exception parsing github context");
2802728026 }
2802828027
@@ -28043,7 +28042,7 @@ async function createChange({
2804328042 payload.deploymentGateDetails = deploymentGateDetails;
2804428043 }
2804528044 } catch (err) {
28046- console.log(`Error occured with message ${err}`);
28045+ console.log(`[ServiceNow DevOps] Error occured with message ${err}`);
2804728046 throw new Error("Exception preparing payload");
2804828047 }
2804928048
@@ -28074,12 +28073,12 @@ async function createChange({
2807428073 else {
2807528074 throw new Error('For Basic Auth, Username and Password is mandatory for integration user authentication');
2807628075 }
28077-
28078- core.debug("[ServiceNow DevOps], Sending Request for Create Change, Request Header :" + JSON.stringify(httpHeaders) + ", Payload :" + JSON.stringify(payload) + "\n");
28076+ core.debug("[ServiceNow DevOps] Sending Request for Create Change, Request Header :" + JSON.stringify(httpHeaders) + ", Payload :" + JSON.stringify(payload) + "\n");
2807928077 try {
2808028078 response = await axios.post(postendpoint, JSON.stringify(payload), httpHeaders);
28081- status = true;
2808228079 } catch (err) {
28080+ core.debug("[ServiceNow DevOps] Detailed error information:"+ JSON.stringify(err, null, 2));
28081+ displayErrorMsg(`[ServiceNow DevOps] Error occurred with create change call - Code: ${err.code}, Message: ${err.message}`);
2808328082 if (err.code === 'ECONNABORTED') {
2808428083 throw new Error(`change creation timeout after ${err.config.timeout}s`);
2808528084 }
@@ -28126,18 +28125,17 @@ async function createChange({
2812628125 throw new Error(errMsg);
2812728126 }
2812828127 }
28129- if (status) {
28130- var result = response.data.result;
28131- if (result && result.status == "Success") {
28132- if(result.message)
28133- console.log('\n \x1b[1m\x1b[36m' + result.message + '\x1b[0m\x1b[0m');
28134- else
28135- console.log('\n \x1b[1m\x1b[36m' + "The job is under change control. A callback request is created and polling has been started to retrieve the change info." + '\x1b[0m\x1b[0m');
28136- }
28137- }
28128+ return response
2813828129}
28130+
28131+ function displayErrorMsg(errMsg) {
28132+ console.error('\n\x1b[31m' + errMsg + '\x1b[31m');
28133+ core.setFailed(errMsg);
28134+ }
28135+
2813928136module.exports = { createChange };
2814028137
28138+
2814128139/***/ }),
2814228140
2814328141/***/ 1597:
@@ -35178,10 +35176,24 @@ const main = async() => {
3517835176 }
3517935177 }
3518035178
35181- if (deploymentGateStr)
35179+ if (deploymentGateStr) {
3518235180 status = false; //do not poll to check for deployment gate feature
35181+ }
3518335182
3518435183 if (status) {
35184+ var result = response.data.result;
35185+ if (result && result.pipelineTracked === 'false') {
35186+ console.log("Change request cannot be created as pipeline is configured to NOT track in the servicenow instance");
35187+ return;
35188+ }
35189+
35190+ if (result && result.status == "Success") {
35191+ if(result.message)
35192+ console.log('\n \x1b[1m\x1b[36m' + result.message + '\x1b[0m\x1b[0m');
35193+ else
35194+ console.log('\n \x1b[1m\x1b[36m' + "The job is under change control. A callback request is created and polling has been started to retrieve the change info." + '\x1b[0m\x1b[0m');
35195+ }
35196+
3518535197 let timeout = parseInt(core.getInput('timeout') || 3600);
3518635198 let interval = parseInt(core.getInput('interval') || 100);
3518735199
0 commit comments