ServiceNow anwenderdefinierte Aktionen für GitLab

  • Freigeben Version: Xanadu
  • Aktualisiert 1. August 2024
  • 6 Minuten Lesedauer
  • 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.

    Um Docker -Images zu konfigurieren, müssen die folgenden Umgebungsvariablen in Ihrer GitLab -Instanz für Ihr Projekt verfügbar sein.
    • 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 ein GitLab -Projekt konfigurieren, werden die Umgebungsvariablen für das Projekt erstellt und die zuletzt konfigurierten Variablenwerte berücksichtigt. Wenn Sie ein Kunde sind, der ein Upgrade durchführt, müssen Sie Ihre vorhandenen GitLab -Projekte neu konfigurieren oder die Umgebungsvariablen manuell in Ihrer GitLab -Instanz hinzufügen. Informationen zum Hinzufügen von Variablen finden Sie in der GitLab-Dokumentation.

    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 ..

    Verbindungsdetails.

    ServiceNow Docker-Image

    Sie müssen das Docker-Image ServiceNow (servicenowdocker/sndevops:4.0.0) in Ihrer Pipeline übergeben, bevor Sie anwenderdefinierte Aktionen in Ihrer Pipeline hinzufügen können. Sie können das öffentliche Repository „app-devops-gitlab“ unter https://github.com/ServiceNow/app-devops-gitlabklonen und das Docker-Image erstellen, indem Sie die folgenden Befehle ausführen:
    docker build -t servicenowdocker/sndevops:4.0.0
    docker push servicenowdocker/sndevops:4.0.0
    Sie können das Docker-Image am Anfang der YML-Datei hinzufügen. Sie müssen es nicht für jeden Auftrag separat hinzufügen.
    Hinweis:
    Wenn Sie mehrere Bilder verwenden möchten, fügen Sie sie auf Positionsebene hinzu.

    Sie 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

    Fügen Sie den anwenderdefinierten Schritt ServiceNow DevOps Change auf Positionsebene hinzu, um einen Change in Ihrer ServiceNow-Instanz zu erstellen. Beispiel:
    
    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\"}}"
    
    
    Hinweis:
    Wenn Sie sowohl den Docker-Change-Schritt als auch den manuellen Anweisungs-Change-Schritt (when:) verwenden, stellen Sie sicher, dass Sie sie auf unterschiedlichen Aufgabenebenen hinzufügen.

    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.
    Hinweis:
    Der Name des Change-Schritts muss das ServiceNow DevOps-Change- Schlüsselwort enthalten, bei dem es sich um den Auftragsnamen handelt.

    ServiceNow DevOps SonarScan-Ergebnisse

    Fügen Sie den anwenderdefinierten Schritt ServiceNow DevOps-SonarScan-Ergebnisse auf Positionsebene hinzu, um eine Sonar-Zusammenfassung in Ihrer ServiceNow-Instanz zu erstellen. Beispiel:
    
    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.
    Hinweis:
    Der Name des Sonar-Schritts muss mit dem Auftragsnamen übereinstimmen, der ServiceNow DevOps SonarScan-Ergebnisse lautet.
    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

    Fügen Sie den anwenderdefinierten Artefaktschritt auf Aufgabenebene hinzu, um ein Artefakt in Ihrer ServiceNow-Instanz zu registrieren. Beispiel:
    
    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

    Fügen Sie den anwenderdefinierten Paketschritt auf Aufgabenebene hinzu, um ein Paket in Ihrer ServiceNow-Instanz zu registrieren. Beispiel:
    
    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.

    Beispiel:
    
    
    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.

    Beispiel:
    
    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.

    Beispiel:
    
    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