ServiceNow anwenderdefinierte Aktionen für GitLab
Verwenden Sie die anwenderdefinierten Aktionen [ ServiceNow für GitLab, um Daten im Zusammenhang mit der Erstellung von Change-Anforderungen, Sonar-Scans, Artefaktregistrierung und Paketregistrierung in Ihrer Pipeline DockerGitLab mithilfe des Container-Image [] zu sammeln.
Docker Ein Image ist ein Softwarepaket, das zum Ausführen einer Anwendung verwendet werden kann. Diese Abbildung zeigt, wie ein Container instanziiert werden soll und welche Softwarekomponenten ausgeführt werden müssen. Docker Container ist eine virtuelle Umgebung, die Anwendungscode und alle Abhängigkeiten kombiniert, die zum Ausführen der Anwendung erforderlich sind. Weitere Informationen zu Docker finden Sie in der Docker-Dokumentation.
- SNOW_TOKEN: ServiceNow Tokennummer. Es handelt sich um eine maskierte Variable, die in den Aufträgen nicht angezeigt wird.
- SNOW_TOOLID: ServiceNow Tool-ID.
- SNOW_URL: Instanz-URL ServiceNow.
Wenn Sie die Variable SNOW_TOKEN hinzufügen, können Sie das Token abrufen, indem Sie im Tooldatensatz in der Tabelle „Tool“ [sn_devops_tool] auf die Schaltfläche Token kopieren klicken.
Die Umgebungsvariablen müssen mit den Werten aktualisiert werden, die im Popup-Fenster Webhooks manuell konfigurieren auf der Datensatzseite des Tools verfügbar sind. Einzelheiten zum Anzeigen der Verbindungsdetails finden Sie unter Konfigurieren Sie Webhooks über den Tooldatensatz und Konfigurieren Sie Webhooks manuell in GitLab ..
ServiceNow Docker-Image
docker build -t servicenowdocker/sndevops:4.0.0docker push servicenowdocker/sndevops:4.0.0Sie können auch das öffentliche Repository „app-devops-gitlab“ anpassen und ein eigenes Docker-Image zur Übergabe in der Pipeline erstellen.
ServiceNow DevOps Change-Schritt
stages:
- DevOpsChangeApproval
ServiceNow DevOps Change:
stage: DevOpsChangeApproval
image: servicenowdocker/sndevops:4.0.0
script:
- sndevopscli create change -p "{\"changeStepDetails\":{\"timeout\":3600,\"interval\":100},\"attributes\":{\"short_description\":\"Software Deployment\",\"description\":\"Software Deployment.\",\"assignment_group\":\"xxxxxxxxx\",\"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\"}}"
Sie müssen die Eingabewerte für diese anwenderdefinierte Aktion als Zeichenfolge im JSON-Format eingeben.
- changeStepDetails: [optional] Enthält die Zeitüberschreitungs- und Intervalldetails.
- Intervall: [optional] Die Wartezeit in Sekunden zwischen dem Testen der API. Der Standardwert beträgt 100 Sekunden.
- Zeitüberschreitung: [optional] Die maximale Zeit in Sekunden, die gewartet wird, bis die Aktion fehlschlägt. Der Standardwert beträgt 3600 Sekunden.Hinweis:Wenn der Zeitüberschreitungswert auch hier im Zeitüberschreitungs-Runner in GitLab verfügbar ist, wird der frühere Zeitüberschreitungswert berücksichtigt.
- attributes: [optional] Die Attributdetails der Change-Anforderung sollen beim Erstellen des Change in Instanz ServiceNow verwendet werden. Die Change-Anforderung ist ein JSON-Objekt, das von geschweiften Klammern {} umgeben ist und Schlüssel-Wert-Paare enthält, die durch ein Komma (,) getrennt sind. Ein Schlüssel-Wert-Paar besteht aus einem Schlüssel und einem Wert, getrennt durch einen Doppelpunkt (:). Die im Schlüssel-Wert-Paar unterstützten Schlüssel sind „short_description“, „description“, „assignment_group“, „implementation_plan“, „backout_plan“, „test_plan“ usw.
ServiceNow DevOps SonarScan-Ergebnisse
stages:
- DevOpsSonarStage
ServiceNow DevOps SonarScan Results:
stage: DevOpsSonarStage
image: servicenowdocker/sndevops:4.0.0
script:
- sndevopscli create sonar -url 'https://sonarcloud.io' -projectKey 'devsystem2019_TestImportTest'
- url: [obligatorisch] Gibt die Sonar-URL an.
- projectKey: [obligatorisch] Gibt den Sonar-Projektschlüssel an.
- Einschränkung
- Beim Erstellen der Zusammenfassungsergebnisse zur Softwarequalität wird die Umgebungsvariable CI_MERGE_REQUEST_SOURCE_BRANCH_NAME für Zusammenführungspipelines und CI_DEFAULT_BRANCH für Tag-Pipelines verwendet, da die Variable CI_COMMIT_BRANCH nicht für Zusammenführungs- oder Tag-Pipelines verfügbar ist. Weitere Informationen finden Sie in der GitLab-Dokumentation.
Artefakt registrieren
stages:
- artifact
artifact:
stage: artifact
image: servicenowdocker/sndevops:4.0.0
script:
- sndevopscli create artifact -a "[{\"name\":\"Artifact-${CI_JOB_NAME}\",\"repositoryName\":\"Repo\",\"version\":\"1.${CI_JOB_ID}.0\"}]"
Sie müssen die Eingabewerte für diese anwenderdefinierte Aktion als Zeichenfolge im JSON-Format eingeben.
-a: [obligatorisch] Gibt Artefaktdetails an.
Paket registrieren
stages:
- package
package:
stage: package
image: servicenowdocker/sndevops:4.0.0
script:
- sndevopscli create package -n "Package2" -a "[{\"name\":\"Artifact-${CI_JOB_NAME}\",\"repositoryName\":\"Repo\" ,\"version\":\"1.${CI_JOB_ID}.0\"}]"Sie müssen die Eingabewerte für diese anwenderdefinierte Aktion als Zeichenfolge im JSON-Format eingeben.
-n: [obligatorisch] Gibt den Paketnamen an.
Change abrufen
Fügen Sie auf Positionsebene hinzu, um „changeRequestNumber“ aus der Instanz ServiceNow mit den angegebenen „changeDetails“ abzurufen und die Change-Anforderung zu identifizieren.
stages:
- DevOpsGetChange
ServiceNow DevOps Get Change:
stage: DevOpsGetChange
image: servicenowdocker/sndevops:4.0.0
script:
- sndevopscli get change -p "{\"buildNumber\":${CHG_JOB_ID},\"stageName\":\"ServiceNow DevOps Change Step\",\"pipelineName\":\"GitlabDockerGetAndUpdateChange\"}"
-p: It stands for changeDetails. The change details to be used for identifying change request in ServiceNow instance. The change details is a JSON object surrounded by curly braces {} containing key-value pair separated by a comma ,. A key-value pair consists of a key and a value separated by a colon :. The keys supported in key-value pair are buildNumber, pipelineName, stageName
buildNumber: [mandatory]
This specifies ID of the Job where we have created change request.
stageName: [mandatory]
This specifies the Job name where we have created change request..
pipelineName: [mandatory]
This specifies the pipeline name.
Outputs:
sndevopschg.json file created with content: {
"status": "SUCCESS",
"changeRequestNumber": "CHGXXXXX"
}
changeRequestNumber: Change Request Number found for the given change details
status: To know the status of the Change Request GET.
Change aktualisieren
Fügen Sie auf Positionsebene hinzu, um den Change in der Instanz ServiceNow für die changeRequestNumber zu aktualisieren, die als Eingabe zusammen mit changeRequestDetails bereitgestellt wurde.
stages:
- DevOpsUpdateChangeStage
ServiceNow DevOps Update Change:
stage: DevOpsUpdateChangeStage
image: servicenowdocker/sndevops:4.0.0
script:
- sndevopscli update change -n 'CHGXXXXXX' -p "{\"short_description\":\"G Venkata12345 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\"}"
-n [Not mandatory if we have sndevopschg.json in our pipeline yml]: It stands for changeRequestNumber. The change request number to identify a unique change request.
Precedence of choosing changeRequestNumber:
- changeRequestNumber mentioned in the pipeline yml
- changeRequestNumber stored in sndevopschg.json.
-p : It stands for changeDetails. The change details to be used for Updating the change request information identified by the specified change request number with the key-value pairs. The change details is a JSON object surrounded by curly braces {} containing key-value pair separated by a comma ,. A key-value pair consists of a key and a value separated by a colon :. The keys supported in key-value pair are short_description, state, description, work_notes ..so on
OR
- sndevopscli update change -p "{\"short_description\":\"Updated Automated Software Deployment\",\"description\":\"Automated Software Deployment.\",\"assignment_group\":\"XXXXXXXXXX\",\"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\"}"
NOTE: State should be specified at last in case if you are update the state of change request.
- sndevopscli update change -p "{\"short_description\":\"Updated Automated Software Deployment\",\"description\":\"Automated Software Deployment.\",\"assignment_group\":\"XXXXXXXXXX\",\"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\","state":"3"}'
Change automatisch schließen
Integrieren Sie Changes mit automatischer Schließung in Instanz ServiceNow. Ausführliche Informationen zum automatischen Schließen finden Sie unter Details der Change-Anforderung DevOps innerhalb der Pipeline konfigurieren.
stages:
- changeapproval
ServiceNow DevOps Change Step:
stage: changeapproval
image: servicenowdocker/sndevops:4.0.0
script:
- sndevopscli create change -p "{\"changeStepDetails\":{\"timeout\":3600,\"interval\":100},\"autoCloseChange\":true,\"attributes\":{\"short_description\":\"G Venkata 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\"}}"
autoCloseChange: [optional] : Boolean value