簡體   English   中英

Jenkins:帶有 SCM 和 static 腳本的 pipelineJob

[英]Jenkins: pipelineJob with SCM and static script

我很想使用 Jenkins job-dsl pipelineJob為帶有 static(和集中維護)管道的 GitHub 存儲庫創建構建作業。

But looking at the documentation ( https://jenkinsci.github.io/job-dsl-plugin/#path/javaposse.jobdsl.dsl.DslFactory.pipelineJob-definition ) I can either create a cps with a static script or cpsScm with一個 SCM和對存儲庫中Jenkinsfile的引用

定義 SCM 的要求來自gitParameter插件,我想用它來選擇 git 修訂版。

有沒有辦法可以將 static 腳本與 SCM 一起用於管道?


更新:這就是我想要做的具體事情:

  • 定義管道作業
  • 使用 git 參數到 select 的修訂
  • 內聯聲明特定腳本

 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' """) } } }

感謝馬特的提示。

我找到了一種方法,如何實現我想做的事情。

它可以在script中使用 static 管道以及gitParameter作為pipelineJob和實際命令式管道腳本的參數來定義。

潛在地,它可以簡化一點..但是,它可以工作。

 pipelineJob("test") { parameters { gitParameter { name('revision') type('PT_BRANCH_TAG') sortMode('ASCENDING_SMART') defaultValue('origin/master') selectedValue('DEFAULT') description('') branch('') branchFilter('') tagFilter('') useRepository('') quickFilterEnabled(true) } } definition { cps { script(""" properties([ parameters([ gitParameter(branch: '', branchFilter: 'origin/(.*)', defaultValue: 'master', description: '', name: 'revision', quickFilterEnabled: false, selectedValue: 'NONE', sortMode: 'NONE', tagFilter: '*', type: 'PT_BRANCH') ]) ]) node { echo env.revision git branch: "master", url: 'https://github.com/jenkinsci/git-parameter-plugin.git' } """) } } }

Pipeline as code 包含了 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 參數插件頁面上還有一個腳本化管道示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM