Jenkins:使用SCM和静态脚本的pipelineJob



我很想使用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参数插件页面上还有一个脚本管道的例子。

最新更新