web-dev-qa-db-fra.com

Job DSL pour créer un job de type "Pipeline"

J'ai installé Pipeline Plugin qui était autrefois appelé Workflow Plugin plus tôt.
https://wiki.jenkins-ci.org/display/JENKINS/Pipeline+Plugin

Je veux savoir comment utiliser Job Dsl pour créer et configurer un travail de type Pipeline

enter image description here

22
meallhour

Vous devez utiliser pipelineJob :

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

Vous pouvez définir la logique en l'intégrant:

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

ou chargez-le à partir d'un fichier situé dans l'espace de travail:

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

Exemple:

Structure du fichier de travail initial:

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

puis productJob.groovy contenu:

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

Je crois que cette question demande comment utiliser le Job DSL pour créer un travail de pipeline qui référence le fichier Jenkins pour le projet et ne combine pas la création du travail avec les définitions d'étape détaillées comme cela a été donné dans les réponses à ce jour. Cela a du sens: la création du travail Jenkins et la configuration des métadonnées (description, déclencheurs, etc.) pourraient appartenir aux administrateurs Jenkins, mais l'équipe de développement devrait avoir le contrôle sur ce que fait réellement le travail.

@meallhour, est-ce ci-dessous ce que vous recherchez? (fonctionne comme au 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' << '' } )
      }
    }
  }
}

Réf le Job DSL pipelineJob: https://jenkinsci.github.io/job-dsl-plugin/#path/pipelineJob , et piratez-le sur http: // job- dsl.herokuapp.com/ pour voir la configuration générée.


Cet exemple a fonctionné pour moi. Voici un autre exemple basé sur ce qui a fonctionné pour moi:

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

Si vous créez d'abord le pipeline via l'interface utilisateur, vous pouvez utiliser le fichier config.xml et la documentation Jenkins https://jenkinsci.github.io/job-dsl-plugin/#path/pipelineJob to créez votre travail de pipeline.

22
J.Z.

Dans Job DSL, le pipeline est toujours appelé workflow, voir workflowJob .

La prochaine version de Job DSL contiendra quelques améliorations pour les pipelines, par exemple JENKINS-32678 .

6
daspilker

Si vous utilisez un dépôt git, ajoutez un fichier appelé Jenkinsfile dans le répertoire racine de votre dépôt. Cela devrait contenir votre travail dsl.

0
ashwnacharya