我很想使用Jenkins作业dslpipelineJob
为具有静态(集中维护(管道的GitHub存储库创建构建作业。
但看看文件(https://jenkinsci.github.io/job-dsl-plugin/#path/javaposse.jobdsl.dsl.DslFactory.pipelineJob-定义(我可以用静态脚本创建cps
,也可以用SCM创建cpsScm
并引用存储库中的Jenkinsfile
。
定义SCM的要求来自gitParameter
插件,我想用它来选择一个git修订版。
有没有一种方法可以将管道的静态脚本与SCM一起使用?
更新:这就是我想做的具体事情:
- 定义管道作业
- 使用git参数选择修订
- 内联声明特定脚本
pipelineJob("test") {
parameters {
gitParameter {
name('revision')
type('PT_BRANCH_TAG')
defaultValue('origin/master')
selectedValue('DEFAULT')
description('')
branch('')
branchFilter('')
tagFilter('')
useRepository('')
quickFilterEnabled(true)
}
}
logRotator {
numToKeep(50)
}
definition {
cpsScm {
scm {
git {
remote {
github("<my-repo>")
credentials('github')
}
branch('$revision')
}
}
script("""
@Library(value='pipeline-lib@master', changelog=false) _
myPipeline projectName: 'test-name'
""")
}
}
}
作为代码的Pipeline包含了jobs-dsl的许多功能,这可能就是jobs-dsl的pipelineJob
中缺少一些微调功能的原因。Git参数插件页面上给出的示例实际上在管道中,可能是作业dsl定义的cps
部分的脚本部分。问题中引用的代码可以转换为:
pipelineJob("test") {
logRotator {
numToKeep(50)
}
definition {
cps {
script('''
pipeline {
agent any
libraries {
lib("pipeline-lib@master")
}
parameters {
gitParameter name: 'revision',
type: 'PT_BRANCH_TAG',
defaultValue: 'origin/master',
selectedValue: 'DEFAULT',
description: '',
branch: '',
branchFilter: '',
tagFilter: '',
useRepository: '',
quickFilterEnabled: true
}
stages {
stage('Build') {
steps {
git branch: "${revision}",
url: <myrepo>,
credentialsId: 'github'
// not familiar with what the next line does, assuming it's a pipeline step
myPipeline projectName: 'test-name'
}
}
}
''')
}
}
}
这是用于声明性管道的。git参数插件页面上还有一个脚本管道的例子。