Подтвердить что ты не робот

Работа DSL для создания задания типа "Тип трубопровода"

Я установил Pipeline Plugin, который раньше назывался Workflow Plugin.
https://wiki.jenkins-ci.org/display/JENKINS/Pipeline+Plugin

Я хочу знать, как я могу использовать Job Dsl для создания и настройки задания типа Pipeline

введите описание изображения здесь

4b9b3361

Ответ 1

Вы должны использовать pipelineJob.

Пример:

pipelineJob('Pipeline') {
  definition {
    cps {
      sandbox()
      script("""
        node {
          stage('init') {
            build 'Pipeline-init'
          } 
          stage('build') {
            build 'Pipeline-build'
          }
        }
      """.stripIndent())      
    }
  }
}

Ответ 2

В Job DSL конвейер по-прежнему называется рабочим процессом, см. workflowJob.

В следующем выпуске DSL для задания будут содержаться некоторые улучшения для конвейеров, например. JENKINS-32678.

Ответ 3

Я считаю, что этот вопрос задает вопрос о том, как использовать Job DSL для создания задания на конвейер, который ссылается на файл Jenkins для проекта, и не сочетает создание задания с подробными определениями шагов, как это было дано в ответах на Дата. Это имеет смысл: создание Jenkins и создание метаданных (описание, триггеры и т.д.) Могут принадлежать администраторам Jenkins, но команда разработчиков должна иметь контроль над тем, что на самом деле делает работа.

@meallhour, это ниже того, что вам нужно? (работает как Job DSL 1.64)

pipelineJob('DSL_Pipeline') {

  def repo = 'https://github.com/path/to/your/repo.git'

  triggers {
    scm('H/5 * * * *')
  }
  description("Pipeline for $repo")

  definition {
    cpsScm {
      scm {
        git {
          remote { url(repo) }
          branches('master', '**/feature*')
          scriptPath('misc/Jenkinsfile.v2')
          extensions { }  // required as otherwise it may try to tag the repo, which you may not want
        }

        // the single line below also works, but it
        // only covers the 'master' branch and may not give you
        // enough control.
        // git(repo, 'master', { node -> node / 'extensions' << '' } )
      }
    }
  }
}

Справьте работу DSL pipJob: https://jenkinsci.github.io/job-dsl-plugin/#path/pipelineJob и взломайте его на http://job-dsl.herokuapp.com/, чтобы увидеть сгенерированную конфигурацию.

Этот пример работал у меня. Вот еще один пример, основанный на том, что сработало для меня:

pipelineJob('Your App Pipeline') { 

  def repo = 'https://github.com/user/yourApp.git' 
  def sshRepo = '[email protected]:user/yourApp.git' 

  description("Your App Pipeline") 
  keepDependencies(false) 

  properties{ 

    githubProjectUrl (repo) 
    rebuild { 
      autoRebuild(false) 
    } 
  } 

  definition { 

    cpsScm { 
      scm { 
        git { 
          remote { url(sshRepo) } 
          branches('master') 
          scriptPath('Jenkinsfile') 
          extensions { }  // required as otherwise it may try to tag the repo, which you may not want 
        } 
      } 
    } 
  }

Если вы сначала создаете конвейер через пользовательский интерфейс, вы можете использовать файл config.xml и документацию Jenkins https://jenkinsci.github.io/job-dsl-plugin/#path/pipelineJob для создания ваш проект трубопровода.

Ответ 4

Если вы используете репо git, добавьте файл под названием Jenkinsfile в корневой каталог вашего репо. Это должно содержать вашу работу dsl.