Skip to content

Commit abffff6

Browse files
Releasing 6.1.0 version
1 parent b14df91 commit abffff6

File tree

7 files changed

+50
-41
lines changed

7 files changed

+50
-41
lines changed

README.md

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,16 @@
1-
# app-devops-gitlab-docker
1+
# app-devops-gitlab
22

33
New repository for developing a plugin to integrate between ITSM DevOps and GitLab pipelines
44

5+
### Owners
6+
7+
> ramachandrarao.p
8+
9+
### How to build on Jenkins
10+
* Create a `pom.xml` file at the root level
11+
* Go to the [BT1 Service Catalog](https://buildtools1.service-now.com/nav_to.do?uri=%2Fcom.glideapp.servicecatalog_cat_item_view.do%3Fv%3D1%26sysparm_id%3D9dbd0c54db1acb403a3d5dd5ce961948%26sysparm_link_parent%3Dad2fecb72bfc310052f7c71317da157e%26sysparm_catalog%3De0d08b13c3330100c8b837659bba8fb4%26sysparm_catalog_view%3Dess%26sysparm_view%3Dess) to request a Jenkins job
12+
13+
Once the request is processed, a multi-branch job is created on https://buildmaster-hotel.devsnc.com and will build any branches that match [ServiceNow branch naming convention](https://buildtools1.service-now.com/kb_view_customer.do?sysparm_article=KB0528607).
514

615
# CLI example using npm modules
716

@@ -56,11 +65,11 @@ npm unlink .
5665
### Building Docker Image
5766

5867
```sh
59-
docker build -t servicenowdocker/sndevops:6.0.0 .
68+
docker build -t servicenowdocker/sndevops:6.1.0 .
6069
```
6170

6271
```sh
63-
docker push servicenowdocker/sndevops:6.0.0
72+
docker push servicenowdocker/sndevops:6.1.0
6473
```
6574

6675
## Integrating with GitLab
@@ -106,7 +115,7 @@ stages:
106115

107116
package:
108117
stage: package
109-
image: servicenowdocker/sndevops:6.0.0
118+
image: servicenowdocker/sndevops:6.1.0
110119
script:
111120
- sndevopscli create artifact -a '[{"name":"artifact-name","repositoryName":"artifact-repo-name" ,"version":"1.3.0"}]'
112121
- sndevopscli create package -n "package-name" -a '[{"name":"artifact-name","repositoryName":"artifact-repo-name" ,"version":"1.3.0"}]
@@ -118,7 +127,7 @@ stages:
118127

119128
package:
120129
stage: package
121-
image: servicenowdocker/sndevops:6.0.0
130+
image: servicenowdocker/sndevops:6.1.0
122131
script:
123132
- sndevopscli create artifact -u <servicenow-url> -t <tool-id> --token <tool-token> -a '[{"name":"artifact-name","repositoryName":"artifact-repo-name" ,"version":"1.3.0"}]'
124133
- sndevopscli create package -u <servicenow-url> -t <tool-id> --token <tool-token> -n "package-mame" -a '[{"name":"artifact-name","repositoryName":"artifact-repo-name" ,"version":"1.3.0"}]
@@ -142,7 +151,7 @@ stages:
142151

143152
ServiceNow DevOps Change:
144153
stage: DevOpsChangeApproval
145-
image: servicenowdocker/sndevops:6.0.0
154+
image: servicenowdocker/sndevops:6.1.0
146155
script:
147156
- sndevopscli create change -p '{"changeStepDetails":{"timeout":3600,"interval":100},"attributes":{"short_description":"Automated Software Deployment","description":"Automated Software Deployment.","assignment_group":"XXXXXXX","implementation_plan":"Software update is tested and results can be found in Test Summaries Tab.","backout_plan":"When software fails in production, the previous software release will be re-deployed.","test_plan":"Testing if the software was successfully deployed or not"}}'
148157

@@ -182,7 +191,7 @@ stages:
182191

183192
ServiceNow DevOps Sonar Scan Results:
184193
stage: DevOpsSonarStage
185-
image: servicenowdocker/sndevops:6.0.0
194+
image: servicenowdocker/sndevops:6.1.0
186195
script:
187196
- sndevopscli create sonar -url 'https://sonarcloud.io' -projectKey 'xxxxxxx' -branch 'master'
188197

@@ -207,7 +216,7 @@ stages:
207216

208217
ServiceNow DevOps Security Scan Results:
209218
stage: DevOpsSecurityScanStage
210-
image: servicenowdocker/sndevops:6.0.0
219+
image: servicenowdocker/sndevops:6.1.0
211220
script:
212221
- sndevopscli create securityScan -p "{\"pipelineInfo\":{\"buildNumber\":\"buildNumber\",\"pipelineExecutionUrl\":\"pipelineExecutionUrl\" },\"securityResultAttributes\":{ \"scanner\":\"Veracode\",\"applicationName\":\"PetStoreAPI-Github\",\"buildVersion\":\"\",\"securityToolId\":\"\"}}"
213222

@@ -235,7 +244,7 @@ stages:
235244

236245
ServiceNow DevOps Get Change:
237246
stage: DevOpsGetChange
238-
image: servicenowdocker/sndevops:6.0.0
247+
image: servicenowdocker/sndevops:6.1.0
239248
script:
240249
- sndevopscli get change -p "{\"buildNumber\":\"buildNumber\",\"stageName\":\"ServiceNow DevOps Change Step\",\"pipelineName\":\"GitlabDockerGetAndUpdateChange\"}"
241250

@@ -271,7 +280,7 @@ stages:
271280

272281
ServiceNow DevOps Update Change:
273282
stage: DevOpsUpdateChangeStage
274-
image: servicenowdocker/sndevops:6.0.0
283+
image: servicenowdocker/sndevops:6.1.0
275284
script:
276285
- sndevopscli update change -n 'CHGXXXXXX' -p "{\"short_description\":\"Automated Software Deployment\",\"description\":\"Automated Software Deployment.\",\"assignment_group\":\"XXXXX\",\"implementation_plan\":\"Software update is tested and results can be found in Test Summaries Tab.\",\"backout_plan\":\"When software fails in production, the previous software release will be re-deployed.\",\"test_plan\":\"Testing if the software was successfully deployed or not\"}"
277286

@@ -298,7 +307,7 @@ stages:
298307

299308
ServiceNow DevOps Change Step:
300309
stage: changeapproval
301-
image: servicenowdocker/sndevops:6.0.0
310+
image: servicenowdocker/sndevops:6.1.0
302311
script:
303312
- sndevopscli create change -p "{\"changeStepDetails\":{\"timeout\":3600,\"interval\":100},\"autoCloseChange\":true,\"attributes\":{\"short_description\":\"Automated Software Deployment\",\"description\":\"Automated Software Deployment.\",\"assignment_group\":\"xxxxxxxx\",\"implementation_plan\":\"Software update is tested and results can be found in Test Summaries Tab.\",\"backout_plan\":\"When software fails in production, the previous software release will be re-deployed.\",\"test_plan\":\"Testing if the software was successfully deployed or not\"}}"
304313

github-ci.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ jobs:
4848
runs-on: ubuntu-latest
4949
needs: ServiceNowDevOpsChange
5050
container:
51-
image: servicenowdocker/sndevops:6.0.0
51+
image: servicenowdocker/sndevops:6.1.0
5252
env:
5353
CI_JOB_NAME: "ServiceNowDevOpsChange"
5454

@@ -61,7 +61,7 @@ jobs:
6161
runs-on: ubuntu-latest
6262
needs: build
6363
container:
64-
image: servicenowdocker/sndevops:6.0.0
64+
image: servicenowdocker/sndevops:6.1.0
6565
env:
6666
CI_JOB_NAME: "ArtifactAndPackage"
6767
steps:
@@ -75,7 +75,7 @@ jobs:
7575
needs: ArtifactAndPackage
7676
runs-on: ubuntu-latest
7777
container:
78-
image: servicenowdocker/sndevops:6.0.0
78+
image: servicenowdocker/sndevops:6.1.0
7979
env:
8080
CI_JOB_NAME: "ServiceNowDevOpsSonarScanResults"
8181
steps:
@@ -88,7 +88,7 @@ jobs:
8888
runs-on: ubuntu-latest
8989
needs: build
9090
container:
91-
image: servicenowdocker/sndevops:6.0.0
91+
image: servicenowdocker/sndevops:6.1.0
9292
steps:
9393
- name: security scan
9494
run: |

gitlab-ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
image: servicenowdocker/sndevops:6.0.0
1+
image: servicenowdocker/sndevops:6.1.0
22
stages:
33
- pre-build
44
- build

harness-ci.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ pipeline:
4545
identifier: Sonar_container
4646
spec:
4747
connectorRef: docker_connector # harness docker connector
48-
image: servicenowdocker/sndevops:6.0.0
48+
image: servicenowdocker/sndevops:6.1.0
4949
command: |-
5050
export SNOW_URL="<+variable.SNOW_URL>"
5151
export SNOW_TOOLID="<+variable.SNOW_TOOLID>"
@@ -93,7 +93,7 @@ pipeline:
9393
identifier: security
9494
spec:
9595
connectorRef: docker_connector # harness docker connector
96-
image: servicenowdocker/sndevops:6.0.0
96+
image: servicenowdocker/sndevops:6.1.0
9797
command: |-
9898
export SNOW_URL="<+variable.SNOW_URL>"
9999
export SNOW_TOOLID="<+variable.SNOW_TOOLID>"
@@ -156,7 +156,7 @@ pipeline:
156156
identifier: ServiceNow_change
157157
spec:
158158
connectorRef: docker_connector # harness docker connector
159-
image: servicenowdocker/sndevops:6.0.0
159+
image: servicenowdocker/sndevops:6.1.0
160160
command: |-
161161
# set mandetory variables. These can be set from Environment variable section of Optional configuration as well.
162162
export HARNESS_STAGE_NAME="<+stage.identifier>"

package-lock.json

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"author": "",
1414
"license": "ISC",
1515
"dependencies": {
16-
"axios": "^1.6.8",
16+
"axios": "^1.7.4",
1717
"commander": "^11.0.0",
1818
"dotenv": "^16.3.1"
1919
}

src/api/change/changeRequest.js

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ class ChangeRequestManager extends SnDevopsApi {
2222
}
2323
*/
2424
async createChange(pipelineContext, changeAttrPayload) {
25-
let status = true;
2625
let response;
2726
let changePayload; //Payload contains information necessary for change creation
2827
let changeDetails; //Incoming payload after JSON parsed
@@ -77,7 +76,22 @@ class ChangeRequestManager extends SnDevopsApi {
7776

7877
let payload = this._getRequestBodyForChangeCreation(changePayload, pipelineContext);
7978
response = await this.createChangeNotification(payload);
80-
if (status) {
79+
if (response) {
80+
var result = response.data.result;
81+
if (result && result.pipelineTracked === 'false') {
82+
console.log("Change request cannot be created as pipeline is configured to NOT track in the servicenow instance");
83+
return;
84+
}
85+
86+
if (result && result.status == "Success") {
87+
if (result.changeControl === false)
88+
console.log('\n \x1b[1m\x1b[36m' + "Change control is not enabled on the pipeline stage" + '\x1b[0m\x1b[0m');
89+
else if (result.message)
90+
console.log('\n \x1b[1m\x1b[36m' + result.message + '\x1b[0m\x1b[0m');
91+
else
92+
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');
93+
}
94+
8195
interval = interval >= 100 ? interval : 100;
8296
timeout = timeout >= 100 ? timeout : 3600;
8397

@@ -91,14 +105,12 @@ class ChangeRequestManager extends SnDevopsApi {
91105
}
92106
}
93107
} catch (err) {
94-
status = false;
95108
console.error('\n \x1b[1m\x1b[31m' + err.message + '\x1b[0m\x1b[0m');
96109
process.exit(1);
97110
}
98111
}
99112

100113
async createChangeNotification(changePayload) {
101-
let status = false;
102114
let response;
103115

104116
try {
@@ -114,7 +126,6 @@ class ChangeRequestManager extends SnDevopsApi {
114126
let httpHeaders = { headers: defaultHeadersForToken };
115127
try {
116128
response = await axios.post(url.toString(), JSON.stringify(changePayload), httpHeaders);
117-
status = true;
118129
} catch (err) {
119130
if (err.code === 'ECONNABORTED') {
120131
throw new Error(`change creation timeout after ${err.config.timeout}s`);
@@ -163,18 +174,7 @@ class ChangeRequestManager extends SnDevopsApi {
163174
throw new Error(errMsg);
164175
}
165176
}
166-
167-
if (status) {
168-
var result = response.data.result;
169-
if (result && result.status == "Success") {
170-
if (result.changeControl === false)
171-
console.log('\n \x1b[1m\x1b[36m' + "Change control is not enabled on the pipeline stage" + '\x1b[0m\x1b[0m');
172-
else if (result.message)
173-
console.log('\n \x1b[1m\x1b[36m' + result.message + '\x1b[0m\x1b[0m');
174-
else
175-
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');
176-
}
177-
}
177+
return response;
178178
} catch (error) {
179179
throw new Error(error.message);
180180
}

0 commit comments

Comments
 (0)