it-swarm.com.de

Job DSL zum Erstellen eines Jobs vom Typ "Pipeline"

Ich habe Pipeline Plugin Installiert, das früher als Workflow Plugin Bezeichnet wurde.
https://wiki.jenkins-ci.org/display/JENKINS/Pipeline+Plugin

Ich möchte wissen, wie ich Job Dsl verwenden kann, um einen Job vom Typ Pipeline zu erstellen und zu konfigurieren.

enter image description here

22
meallhour

Sie sollten pipelineJob verwenden:

pipelineJob('job-name') {
  definition {
    cps {
      script('logic-here')
      sandbox()
    }
  }
}

Sie können die Logik definieren, indem Sie sie einfügen:

pipelineJob('job-name') {
  definition {
    cps {
      script('''
        pipeline {
            agent any
                stages {
                    stage('Stage 1') {
                        steps {
                            echo 'logic'
                        }
                    }
                    stage('Stage 2') {
                        steps {
                            echo 'logic'
                        }
                    }
                }
            }
        }
      '''.stripIndent())
      sandbox()     
    }
  }
}

oder laden Sie es aus einer Datei im Arbeitsbereich:

pipelineJob('job-name') {
  definition {
    cps {
      script(readFileFromWorkspace('file-seedjob-in-workspace.jenkinsfile'))
      sandbox()     
    }
  }
}

Beispiel:

Struktur der Seed-Job-Datei:

jobs
   \- productJob.groovy
logic
   \- productPipeline.jenkinsfile

dann productJob.groovy Inhalt:

pipelineJob('product-job') {
  definition {
    cps {
      script(readFileFromWorkspace('logic/productPipeline.jenkinsfile'))
      sandbox()     
    }
  }
}
23
agabrys

Ich glaube, diese Frage stellt eine Frage zur Verwendung von Job DSL zum Erstellen eines Pipeline-Jobs, der auf die Jenkins-Datei für das Projekt verweist, und kombiniert die Auftragserstellung nicht mit den detaillierten Schrittdefinitionen, wie sie in den bisherigen Antworten angegeben wurden. Dies ist sinnvoll: Die Erstellung von Jenkins-Jobs und die Konfiguration der Metadaten (Beschreibung, Auslöser usw.) könnten Jenkins-Administratoren gehören, aber das Entwicklerteam sollte die Kontrolle darüber haben, was der Job tatsächlich tut.

@meallhour, ist das unten was du suchst? (funktioniert wie bei Job DSL 1.64)

pipelineJob('DSL_Pipeline') {

  def repo = 'https://github.com/path/to/your/repo.git'

  triggers {
    scm('H/5 * * * *')
  }
  description("Pipeline for $repo")

  definition {
    cpsScm {
      scm {
        git {
          remote { url(repo) }
          branches('master', '**/feature*')
          scriptPath('misc/Jenkinsfile.v2')
          extensions { }  // required as otherwise it may try to tag the repo, which you may not want
        }

        // the single line below also works, but it
        // only covers the 'master' branch and may not give you
        // enough control.
        // git(repo, 'master', { node -> node / 'extensions' << '' } )
      }
    }
  }
}

Verweisen Sie auf den Job DSL pipelineJob: https://jenkinsci.github.io/job-dsl-plugin/#path/pipelineJob und hacken Sie ihn auf http: // job- dsl.herokuapp.com/ um die generierte Konfiguration zu sehen.


Dieses Beispiel hat bei mir funktioniert. Hier ist ein weiteres Beispiel, basierend auf dem, was für mich funktioniert hat:

pipelineJob('Your App Pipeline') { 

  def repo = 'https://github.com/user/yourApp.git' 
  def sshRepo = '[email protected]:user/yourApp.git' 

  description("Your App Pipeline") 
  keepDependencies(false) 

  properties{ 

    githubProjectUrl (repo) 
    rebuild { 
      autoRebuild(false) 
    } 
  } 

  definition { 

    cpsScm { 
      scm { 
        git { 
          remote { url(sshRepo) } 
          branches('master') 
          scriptPath('Jenkinsfile') 
          extensions { }  // required as otherwise it may try to tag the repo, which you may not want 
        } 
      } 
    } 
  }

Wenn Sie die Pipeline zuerst über die Benutzeroberfläche erstellen, können Sie die Datei config.xml und die Jenkins-Dokumentation https://jenkinsci.github.io/job-dsl-plugin/#path/pipelineJob to verwenden Erstellen Sie Ihren Pipeline-Job.

22
J.Z.

In Job DSL wird die Pipeline weiterhin als Workflow bezeichnet, siehe workflowJob .

Die nächste Job DSL-Version enthält einige Verbesserungen für Pipelines, z. JENKINS-32678 .

6
daspilker

Wenn Sie ein Git-Repo verwenden, fügen Sie im Stammverzeichnis Ihres Repos eine Datei mit dem Namen Jenkinsfile hinzu. Dies sollte Ihren Job dsl enthalten.

0
ashwnacharya