Создайте представление сборки конвейера на основе задания конвейера с помощью подключаемого модуля Job DSL в Jenkins

Поскольку в Jenkins Pipeline есть ограничение, что вы не можете добавить шаг ручной сборки без зависания сборки (см., Например, этот вопрос о стекопереработке). Я экспериментирую с комбинацией Jenkins Pipeline и Build Pipeline Plugin с использованием плагина Job DSL.

Мой план состоял в том, чтобы создать сценарий Job DSL, который сначала выполняет конвейер Jenkins (определенный в Jenkinsfile), а затем создайте последующее задание, которое развертывается в производство (это шаг вручную). Я создал этот сценарий Job 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 в качестве "Начального задания" для плагина Build Pipeline?

1 ответ

Из документации на yourDomain.com/plugin/job-dsl/api-viewer/index.html#method/javaposse.jobdsl.dsl.views.NestedViewsContext.envDashboardView

Он показывает, что buildPipelineView может использоваться только в блоке View, который находится внутри блока Folder.

      Folder {
  View {
    buildPipelineView {
    }
  }
}
Другие вопросы по тегам