Verwendung einer deklarativen oder geskripteten Pipeline in DevOps

  • Freigeben Version: Yokohama
  • Aktualisiert 30. Januar 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 JenkinsPipeline und ist in die Quellcodeverwaltung eingecheckt.

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

    Hinweis:
    Die Nachverfolgen Feld für die Pipeline muss auf festgelegt sein Wahr In DevOpsUm 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 IgnoreFehler Gibt die Einstellung an, um einen Auftragsfehler bei einem Fehler zu verhindern (wahr/falsch)

      Wo ChangeRequestDetails Gibt an Abschlusscode und Change-Anforderungsfelder Aus der Pipeline

      Aktiviert die Change-Steuerung für jede Phase auf Stammebene, die einer zugeordnet ist DevOpsSchritt.

    • 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 für DevOps-Change-Geschwindigkeit abgerufen.

    Sie können angeben JenkinsServerkonfiguration in einem dieser Schritte durch Übergabe von Konfigurationsname Attribut in Ihrer Pipeline. Wenn der Konfigurationsname in keinem Schritt angegeben ist, wird in diesem Schritt die Standardkonfiguration verwendet. Wenn Sie einen falschen Konfigurationsnamen übergeben, schlägt der Schritt fehl, es sei denn Ignorieren Sie ServiceNow DevOps-Fehler Option ist beim Konfigurieren von ausgewählt JenkinsPlugin.

    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 JenkinsSnippet-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.
    • SnDevOpsArtefakt
    • SnDevOpsChange
    • SnDevOpsPackage
    • SnDevOpsGetChangeNumber
    • SnDevOpsUpdateChangeInfo
    • SnDevOpsSecurityResult
    Um ein Schrittfragment zu generieren, navigieren Sie aus einer konfigurierten Pipeline zur Pipeline-Syntax, und wählen Sie den Schritt 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 Pipelineskript Generieren 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 Phase auf Stammebene geschachtelt sind, einen Change auslösen
    • Erstellte Orchestration-Aufgaben sind immer der übergeordneten Phase auf Stammebene zugeordnet (nicht der geschachtelten Phase).

    Unterphase

    Wenn in diesem Beispiel für die Unterphase 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 für parallele Phasen eine Change-Anforderung aus einer Unterphase (UAT-Test-1 und/oder UAT statischer Codetest) 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 Codetest) 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
                  }
              }
          }
     }