ServiceNow Actions personnalisées pour GitLab

  • Rversion finale: Xanadu
  • Mis à jour 1 août 2024
  • 7 minutes de lecture
  • 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.

    Pour configurer Docker des images, les variables environnementales suivantes doivent être disponibles dans votre GitLab instance pour votre projet.
    • 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 .
    Lorsque vous configurez un GitLab projet, les variables environnementales sont créées pour le projet et les dernières valeurs variables configurées sont prises en compte. Si vous effectuez une mise à niveau, vous devez reconfigurer vos projets existants GitLab ou ajouter manuellement les variables environnementales dans votre GitLab instance. Pour plus d’informations sur l’ajout de variables, consultez la documentation GitLab.

    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.

    Détails de la connexion.

    ServiceNow Docker Image

    Vous devez transmettre l’image ServiceNow Docker (servicenowdocker/sndevops :4.0.0) dans votre pipeline avant d’ajouter des actions personnalisées dans votre pipeline. Vous pouvez cloner le référentiel public app-devops-gitlab situé à https://github.com/ServiceNow/app-devops-gitlabet créer l’image Docker en exécutant les commandes suivantes :
    docker build -t servicenowdocker/sndevops:4.0.0
    docker push servicenowdocker/sndevops:4.0.0
    Vous pouvez ajouter l’image Docker au début du fichier .yml. Vous n’avez pas besoin de l’ajouter pour chaque tâche séparément.
    Remarque :
    Si vous souhaitez utiliser plusieurs images, ajoutez-les aux niveaux de la tâche.

    Vous 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

    Ajoutez l’étape ServiceNow personnalisée de changement DevOps au niveau de la tâche pour créer un changement dans votre instance ServiceNow. Par exemple :
    
    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\"}}"
    
    
    Remarque :
    Si vous utilisez à la fois l’étape de changement de Docker et l’étape de changement d’instructions manuelles quand, assurez-vous de les ajouter à différents niveaux de tâche.

    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.
    Remarque :
    Le nom de l’étape de changement doit contenir le mot clé de changement ServiceNow DevOps , qui est le nom de la tâche.

    ServiceNow Résultats DevOps SonarScan

    Ajoutez l’étape ServiceNow personnalisée Résultats DevOps SonarScan au niveau de la tâche pour créer un résumé Sonar dans votre instance ServiceNow. Par exemple :
    
    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.
    Remarque :
    Le nom de l’étape Sonar doit être le même que le nom de la tâche, à savoir les résultats ServiceNow DevOps SonarScan.
    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

    Ajoutez l’étape personnalisée de l’artefact au niveau de la tâche pour enregistrer un artefact dans votre instance ServiceNow. Par exemple :
    
    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

    Ajoutez l’étape personnalisée du package au niveau de la tâche pour enregistrer un package dans votre instance ServiceNow. Par exemple :
    
    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.

    Par exemple :
    
    
    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.

    Par exemple :
    
    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.

    Par exemple :
    
    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