Рабочий процесс Jenkins (конвейер) + плагин JobDSL - SCM не работает

Я пытаюсь интегрировать pipelineJob dsl в jenkins DSL (от jenkins DSL plugin).

Как видно из справки по API в jenkins DSL, для моей цели есть аргумент. pipelineJob -> scm -> git

Но после генерации в пользовательском интерфейсе вообще нет представления scm, и я обнаружил, что если бы я сделал чистый pipelineJob, также не было бы пользовательского интерфейса для scm.

Я отследил источник плагина конвейера и понял, что pipelineJob унаследовал задание, поэтому я подумал, что должна быть опция, связанная с SCM, как обычная работа.

Есть ли способ получить нормальный интерфейс scm в работе конвейера? или я должен добиваться своей цели только по отличному сценарию?

Работа Дженкинса DSL ниже

def projects = [
    'Nova',
    'Keystone',
    'Cinder',
    'Glance',
    'Horizon',
    'Neutron',
    'Networking-kakao',
    'Neutron-fwaas',
    'Neutron-lbaas',
    'Octavia',
    'Ceilometer',
    'Heat',
    'Sahara',
    'Trove'
]

def codeName = 'mitaka'
def ref = 'kakao/' + codeName

projects.each {
  def project = it
  def jobName = 'Unit/OpenStack/' + project

  project = project.toLowerCase()
  pipelineJob(jobName) {
    logRotator(daysToKeep = 7, numToKeep = 5)

    scm {
        concurrentBuild()
        git {
            remote {
           url("https://github.com/openstack/${project}.git")

            }
            branch("${ref}")
            extensions {
                wipeOutWorkspace()
            }
        }
    }

    definition {
        cps {
            sandbox()
            script("""
            node {
            stage ('Clone Sources') {
            git {
            remote {
            url("https://github.com/openstack/${project}.git")
            credentials("ccc")
            }
            branch("${ref}")
            extensions {
            wipeOutWorkspace()
            }
            }
            git {
            url 'https://github.com/openstack-tox-base.git'
            branch 'rewrite'
            }
            sh 'cp tox-openstack-base/Dockerfile.test Dockerfile'
            }

            docker.withServer('tcp://...:2375') {
              def img
              def base = docker.image('idock.daumkakao.io/openstack/tox/test-base:newton2')

              stage ('Build Test Image') {
                base.pull()
                  img = docker.build("tox/newton/test-horizon")
              }

            stage ('Run Test') {
              sh "docker run --rm tox/newton/test-horizon"
            }
            }
            }

      """.stripIndent())
        }
    }
}
}

person XeIte    schedule 07.11.2017    source источник
comment
Конвейеры настраиваются с помощью кода, и это хорошо. Вы можете настроить SCM в своем коде JobDSL, используя scm. Взгляните на средство просмотра API. И у вас есть те же средства в разработке. Предлагаю вам ознакомиться с Jenkins Pipelines.   -  person StephenKing    schedule 07.11.2017
comment
@StephenKing Да, поэтому я публикую этот вопрос. Из справочника по API я предполагал использовать этот scm в JobDSL. Но он вообще не генерирует SCM. (Также задание конвейера не имеет представления scm)   -  person XeIte    schedule 07.11.2017
comment
Пожалуйста, опубликуйте свой код, чтобы я мог попытаться помочь   -  person Mor Lajb    schedule 07.11.2017
comment
Разместите свой код.   -  person StephenKing    schedule 07.11.2017
comment
Я выложил код.   -  person XeIte    schedule 07.11.2017


Ответы (1)


Задание конвейера не поддерживает блок scm. К сожалению, API Job DSL позволяет использовать блок scm в pipelineJob. Это нерешенная проблема в Job DSL, см. JENKINS-31832.

Чтобы загрузить сценарий конвейера из SCM, используйте блок cpsScm:

pipelineJob('example') {
  definition {
    cpsScm {
      scm {
        git('https://github.com/jenkinsci/job-dsl-plugin.git')
      }
    }
  }
}
person daspilker    schedule 08.02.2018