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
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()
}
}
}
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.
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 .
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.