我已经安装了Pipeline Plugin
,之前曾被称为Workflow Plugin
https://wiki.jenkins-ci.org/display/JENKINS/Pipeline+Plugin
我想知道如何使用Job Dsl创建和配置Pipeline
类型的作业
答案 0 :(得分:22)
您应该使用pipelineJob
:
pipelineJob('job-name') {
definition {
cps {
script('logic-here')
sandbox()
}
}
}
您可以通过内联来定义逻辑:
pipelineJob('job-name') {
definition {
cps {
script('''
pipeline {
agent any
stages {
stage('Stage 1') {
steps {
echo 'logic'
}
}
stage('Stage 2') {
steps {
echo 'logic'
}
}
}
}
}
'''.stripIndent())
sandbox()
}
}
}
或从位于工作区中的文件中加载:
pipelineJob('job-name') {
definition {
cps {
script(readFileFromWorkspace('file-seedjob-in-workspace.jenkinsfile'))
sandbox()
}
}
}
示例:
种子作业文件结构:
jobs
\- productJob.groovy
logic
\- productPipeline.jenkinsfile
然后productJob.groovy
内容:
pipelineJob('product-job') {
definition {
cps {
script(readFileFromWorkspace('logic/productPipeline.jenkinsfile'))
sandbox()
}
}
}
答案 1 :(得分:20)
我相信这个问题是在询问如何使用Job DSL来创建一个引用该项目的Jenkins文件的管道作业,并且不会将作业创建与详细的步骤定义结合起来,如在答案中给出的那样。日期。这是有道理的:Jenkins作业创建和元数据配置(描述,触发器等)可能属于Jenkins管理员,但开发团队应该可以控制作业实际执行的操作。
@meallhour,下面你要追求的是什么? (在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' << '' } )
}
}
}
}
参考Job DSL pipelineJob:https://jenkinsci.github.io/job-dsl-plugin/#path/pipelineJob,并在http://job-dsl.herokuapp.com/上删除它以查看生成的配置。
这个例子对我有用。这是另一个基于对我有用的例子:
pipelineJob('Your App Pipeline') {
def repo = 'https://github.com/user/yourApp.git'
def sshRepo = 'git@git.company.com: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
}
}
}
}
如果您首先通过UI构建管道,则可以使用config.xml文件和Jenkins文档https://jenkinsci.github.io/job-dsl-plugin/#path/pipelineJob来创建管道作业。
答案 2 :(得分:6)
在Job DSL中,管道仍称为工作流程,请参阅workflowJob。
下一个Job DSL版本将包含一些管道增强功能,例如: JENKINS-32678
答案 3 :(得分:1)
首先,您需要安装Job DSL插件,然后在jenkins中创建一个自由式项目,然后从构建部分的下拉列表中选择处理作业DSL。
选择使用提供的DSL脚本并提供以下脚本。
pipelineJob('job-name') {
definition {
cps {
script('''
pipeline {
agent any
stages {
stage('Stage name 1') {
steps {
// your logic here
}
}
stage('Stage name 2') {
steps {
// your logic here
}
}
}
}
}
''')
}
}
}
或者您也可以通过指向远程git存储库中的jenkinsfile来创建工作。
pipelineJob("job-name") {
definition {
cpsScm {
scm {
git {
remote {
url("<REPO_URL>")
credentials("<CREDENTIAL_ID>")
}
branch('<BRANCH>')
}
}
scriptPath("<JENKINS_FILE_PATH>")
}
}
}
答案 4 :(得分:0)
如果您使用的是git repo,请在repo的根目录中添加名为Jenkinsfile的文件。这应该包含你的工作dsl。