ServiceNow Actions personnalisées pour GitLab
Utilisez les actions personnalisées pour GitLab collecter des données relatives à la ServiceNow création de demandes de changement, à l’analyse Sonar, à l’enregistrement des artefacts et à l’enregistrement des packages dans votre GitLab pipeline à l’aide de l’image du Docker conteneur.
Docker Image est un package logiciel qui peut être utilisé pour exécuter une application. Cette image indique comment un conteneur doit être instancié et quels composants logiciels doivent être exécutés. Docker Le conteneur est un environnement virtuel qui combine le code de l’application et toutes les dépendances nécessaires à l’exécution de l’application. Pour plus d’informations sur Docker, consultez la documentation Docker.
- SNOW_TOKEN : ServiceNow numéro de jeton. Il s’agit d’une variable masquée qui ne sera pas affichée dans les tâches.
- SNOW_TOOLID : ServiceNow ID de l’outil.
- SNOW_URL : URL de l’instance ServiceNow .
Lors de l’ajout de la variable SNOW_TOKEN, vous pouvez acquérir le jeton en cliquant sur le bouton Copier le jeton sur l’enregistrement de l’outil, situé dans la table Outil [sn_devops_tool].
Les variables environnementales doivent être mises à jour avec les valeurs disponibles dans la fenêtre contextuelle Configurer manuellement les webhooks sur la page d’enregistrement de l’outil. Pour plus d’informations sur l’affichage des détails de la connexion, consultez Configurer des webhooks à partir de l’enregistrement d’outil et Configurer manuellement les webhooks GitLab.
ServiceNow Docker Image
docker build -t servicenowdocker/sndevops:4.0.0docker push servicenowdocker/sndevops:4.0.0Vous pouvez également personnaliser le référentiel public app-devops-gitlab et créer votre propre image Docker à transmettre dans le pipeline.
ServiceNow Étape de changement DevOps
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\"}}"
Vous devez saisir les valeurs d’entrée pour cette action personnalisée sous la forme d’une chaîne au format JSON.
- changeStepDetails : [facultatif] contient les détails du délai d’expiration et de l’intervalle.
- intervalle : [facultatif] Le temps d’attente en secondes entre deux tentatives de l’API. La valeur par défaut est 100 secondes.
- Délai d’expiration : [Facultatif] Temps maximal en secondes d’attente avant l’échec de l’action. La valeur par défaut est de 3 600 secondes.Remarque :Lorsque la valeur timeout est disponible ici aussi dans Timeout runner dans GitLab, la valeur timeout qui est antérieure est prise en compte.
- attributs : [facultatif] Les détails de l’attribut de demande de changement doivent être utilisés lors de la création d’un changement dans ServiceNow une instance. La demande de changement est un objet JSON entouré d’accolades {} contenant des paires clé-valeur séparées par une virgule (,). Une paire clé-valeur se compose d’une clé et d’une valeur séparées par un deux-points (:). Les clés prises en charge dans la paire clé-valeur sont short_description, description, assignment_group, implementation_plan, backout_plan, test_plan, etc.
ServiceNow Résultats DevOps SonarScan
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 : [obligatoire] Cela spécifie l’URL Sonar.
- projectKey : [obligatoire] Cela spécifie la clé de projet Sonar.
- Limitation
- Lors de la création des résultats récapitulatifs de la qualité logicielle, la variable d’environnement CI_MERGE_REQUEST_SOURCE_BRANCH_NAME sera utilisée pour les pipelines de fusion et CI_DEFAULT_BRANCH sera utilisée pour les pipelines de balises, car la variable CI_COMMIT_BRANCH n’est pas disponible pour les pipelines de fusion ou de balises. Pour plus d’informations, consultez la documentation GitLab.
Inscrire l’artefact
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\"}]"
Vous devez saisir les valeurs d’entrée pour cette action personnalisée sous la forme d’une chaîne au format JSON.
-a : [obligatoire] Cela spécifie les détails de l’artefact.
Inscrire le package
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\"}]"Vous devez saisir les valeurs d’entrée pour cette action personnalisée sous la forme d’une chaîne au format JSON.
-n : [obligatoire] Cela spécifie le nom du paquet.
Obtenir un changement
Ajoutez au niveau de la tâche pour obtenir changeRequestNumber à partir de l’instance ServiceNow avec le changeDetails donné pour identifier la demande de changement.
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.
Mettre à jour le changement
Ajoutez au niveau de la tâche pour mettre à jour un changement dans ServiceNow l’instance pour le changeRequestNumber fourni comme entrée avec changeRequestDetails.
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"}'
Changement de fermeture automatique
Incorporer le changement de fermeture automatique dans l’instance ServiceNow . Pour plus d’informations sur la fermeture automatique, reportez-vous à la section Configurer DevOps les détails de la demande de changement dans le pipeline.
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