Verwenden einer deklarativen oder geskripteten Pipeline in DevOps

  • Freigeben Version: Zurich
  • Aktualisiert 31. Juli 2025
  • 3 Minuten Lesedauer
  • Wenn Sie eine Jenkinsdatei verwenden, werden Schritte automatisch anstatt manuell erstellt, zugeordnet und Orchestration-Aufgaben zugeordnet.

    Jenkinsfile ist eine Textdatei, die die Definition von enthält Jenkins Pipeline und ist in die Quellcodeverwaltung eingecheckt.

    Jede in der Jenkinsdatei konfigurierte Phase auf Stammebene wird als separate Orchestration-Aufgabe in erkannt DevOps Die einem einzelnen Schritt zugeordnet ist.

    Hinweis:
    Die Nachverfolgen Feld für die Pipeline muss auf festgelegt sein Wahr In DevOps Um Auftragsbenachrichtigungen von zu erhalten Jenkins. Alle aktiven Jenkins-Konfigurationen erhalten Auftragsbenachrichtigungen, wenn dieses Feld auf festgelegt ist Wahr .

    DevOps Jenkinsfile-Befehle

    • SnDevOpsChange(ignoreErrors:{wahr/falsch},changeRequestDetails:{setCloseCode:{wahr/falsch},Attribute:})

      Wo IgnoreErrors Gibt die Einstellung an, um einen Auftragsfehler bei einem Fehler zu verhindern (wahr/falsch)

      Wo ChangeRequestDetails Gibt an Felder „Abschlusscode“ und „Change-Anforderung“ Von innerhalb der Pipeline

      Aktiviert die Change-Steuerung für jede Phase auf Stammebene, die einem zugeordnet ist DevOps Schritt.

    • SnDevOpsArtifact

      Registriert Artefakte bei der Konfiguration Artefakte und Pakete.

    • SnDevOpsPackage

      Erstellt bei der Konfiguration ein Paket für Artefakte Artefakte und Pakete.

    • SnDevOpsGetChangeNumber

      Ruft die Nummer der Change-Anforderung in einer Jenkins-Pipeline basierend auf bestimmten Change-Details ab.

    • SnDevOpsUpdateChangeInfo

      Aktualisiert die Change-Anforderungsdetails, die einer Jenkins-Pipeline zugeordnet sind.

    • SnDevOpsSecurityResult

      Konfiguriert Sicherheitsscans in jeder Phase der Pipeline, und die Scandetails werden aus der entsprechenden Phase in DevOps Change-Geschwindigkeit abgerufen.

    Sie können angeben Jenkins Serverkonfiguration in einem dieser Schritte durch Übergabe von ConfigurationName Attribut in Ihrer Pipeline. Wenn der Konfigurationsname in keinem Schritt angegeben ist, wird in diesem Schritt die Standardkonfiguration verwendet. Die Übergabe eines falschen Konfigurationsnamens führt dazu, dass der Schritt fehlschlägt, es sei denn, es handelt sich um einen falschen Konfigurationsnamen Ignorieren Sie ServiceNow DevOps-Fehler Option ist beim Konfigurieren von ausgewählt Jenkins Plugin.

    Hinweis:
    Die Phasenzuordnung wird nur für Phasen auf Stammebene unterstützt, nicht für geschachtelte oder parallele Phasen.

    Jenkins Fragmentgenerator für DevOps

    Sie können verwenden Jenkins Snippet-Generator-Dienstprogramm zum Generieren eines Vorlagencodes für die Orchestration-Aufgaben für geskriptete Pipelines. Sie können das Dienstprogramm „Snippet-Generator“ verwenden, um eine Vorlage für die folgenden Orchestration-Aufgaben zu erstellen.
    • SnDevOpsArtifact
    • SnDevOpsChange
    • SnDevOpsPackage
    • SnDevOpsGetChangeNumber
    • SnDevOpsUpdateChangeInfo
    • SnDevOpsSecurityResult
    Um ein Schritt-Fragment zu generieren, navigieren Sie aus einer konfigurierten Pipeline zur Pipeline-Syntax, und wählen Sie den Schritt aus dem aus Beispielschritt Listen Sie die Werte für verschiedene Variablen im Schritt auf, und aktualisieren Sie sie. Wählen Sie aus Fehler ignorieren Option zum verhindern eines Auftragsfehlers bei einem Fehler. Wählen Sie Aus Generieren Sie Ein Pipeline-Skript Dient zum Erstellen eines Fragments. Sie können das Fragment kopieren und in eine Pipeline einfügen.
    Beispiel für ein Pipeline-Skript für die SnDevOpsChange-Aufgabe:
    snDevOpsChange changeCreationTimeOut: 3600, changeRequestDetails: '{ "attributes": { "short_description": "Test description", "priority": "1", "start_date": "2021-02-05 08:00:00", "end_date": "2022-04-05 08:00:00", "justification": "test justification", "description": "test description", "cab_required": true, "comments": "This update for work notes is from jenkins file", "work_notes": "test work notes", "assignment_group": "a715cd759f2002002920bde8132e7018" }, "setCloseCode": false, "autoCloseChange": true }', changeStepTimeOut: 18000, configurationName: 'Jenkins1', pollingInterval: 60

    Paralleler und unterstufiger Support

    Wenn eine Phase (oder ein Satz paralleler Phasen) innerhalb einer Pipeline-Phase geschachtelt ist, gelten diese Regeln:

    • Jede Aktion aus der geschachtelten Phase wird als Teil der übergeordneten Phase auf Stammebene verarbeitet
    • Es wird nur eine Change-Anforderung erstellt (auf der übergeordneten Stammebene), auch wenn mehrere Phasen, die unter der übergeordneten Stammebene verschachtelt sind, einen Change auslösen
    • Erstellte Orchestration-Aufgaben sind immer der übergeordneten Phase auf Stammebene zugeordnet (nicht der geschachtelten Phase).

    Unterphase

    Wenn in diesem Unterphasenbeispiel eine Change-Anforderung aus der Unterphase (Bereitstellungsprofil) erstellt wird, werden die Details der übergeordneten Phase auf Stammebene (Bereitstellen) in der Change-Anforderung verwendet, und Orchestration-Aufgaben werden auch der übergeordneten Phase auf Stammebene (Bereitstellen) zugeordnet.

    
    stage("deploy") {
             stages{
                 stage('deploy UAT') {
                    when{
                       branch 'dev'
                    }
                stage('deploy PROD') {
                   when {
                      branch 'master'
                   }
                    steps{
                      
                      snDevOpsChange()              
                    }
                }
            }

    Parallele Phase

    Wenn in diesem Beispiel der parallelen Phase eine Change-Anforderung aus einer Unterphase (UAT-Test-1 und/oder UAT statischer Code-Test) erstellt wird, wird nur die erste Change-Anforderung erstellt (anhand der Details der übergeordneten Phase auf Stammebene, UAT-Test), unabhängig davon, ob beide Unterphasen (UAT-Test-1 und UAT statischer Code-Test) ausgelöst werden.

    Es gibt keinen Hinweis darauf, welche parallele Phase den Change generiert hat, und Orchestration-Aufgaben sind der übergeordneten Phase auf Stammebene (UAT-Test) zugeordnet.

    
    stage('UAT test') {
          parallel {
              stage('UAT test-1') {
                  steps {
                      snDevOpsChange()
                      // 'UAT test-1' tasks
                  }
                    post {
                      success {
                        // post success tasks. E.g.: junit '**/target/surefire-reports/*.xml'
                      }
                  }
              }
              stage('UAT static code test') {
                  steps {
                      snDevOpsChange()
                      // 'UAT static code test' tasks
                  }
              }
          }
     }