使用 Jenkins 中的作业 DSL 插件创建基于管道作业的构建管道视图



由于 Jenkins 管道中有一个限制,即您无法在不挂起构建的情况下添加手动构建步骤(例如请参阅此堆栈溢出问题(,我正在使用作业 DSL 插件尝试将 Jenkins 管道和构建管道插件组合在一起。

我的计划是创建一个作业 DSL 脚本,该脚本首先执行 Jenkins 管道(在Jenkinsfile中定义(,然后创建一个部署到生产的下游作业(这是手动步骤(。我创建了这个作业 DSL 脚本作为测试:

pipelineJob("${REPO_NAME} jobs") {
  logRotator(-1, 10)    
  def repo = "https://path-to-repo/${REPO_NAME}.git"
  triggers {
    scm('* * * * *')
  }
  description("Pipeline for $repo")
  definition {
    cpsScm {
      scm {
        git {
          remote { url(repo) }
          branches('master')
          scriptPath('Jenkinsfile')
          extensions { }  // required as otherwise it may try to tag the repo, which you may not want
        }
      }
    }
  }
  publishers {
     buildPipelineTrigger("${REPO_NAME} deploy to prod") {
        parameters {
            currentBuild()
        }
     }
 }
}
freeStyleJob("${REPO_NAME} deploy to prod") {   
}
buildPipelineView("$REPO_NAME Build Pipeline") {
   selectedJob("${REPO_NAME} jobs")
}

其中REPO_NAME定义为环境变量。Jenkinsfile如下所示:

node {
    stage('build'){
        echo "building"
    }
    stage('run tests'){
        echo "running tests"
    }
    stage('package Docker'){
        echo "packaging"
    }
    stage('Deploy to Test'){
        echo "Deploying to Test"
    }
}

问题是selectedJob指向"${REPO_NAME} jobs",这似乎不是一个有效的选项,如构建管道插件视图中的"初始作业"(您也不能手动选择它(。

有解决方法吗? 即如何使用 Jenkins 管道作为构建管道插件的"初始作业"?

来自yourDomain.com/plugin/job-dsl/api-viewer/index.html#method/javaposse.jobdsl.dsl.views.NestedViewsContext.envDashboardView的文档

它表明buildPipelineView只能在Folder块内的视图块中使用。

Folder {
  View {
    buildPipelineView {
    }
  }
}

最新更新