Verwenden einer deklarativen oder geskripteten Pipeline in DevOps
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.
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.
Jenkins Fragmentgenerator für DevOps
- SnDevOpsArtifact
- SnDevOpsChange
- SnDevOpsPackage
- SnDevOpsGetChangeNumber
- SnDevOpsUpdateChangeInfo
- SnDevOpsSecurityResult
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: 60Paralleler 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
}
}
}
}