Как использовать Jenkins JobDSL, чтобы установить опцию «Извлечь в конкретную локальную ветку» в подключаемом модуле Git?

Имею следующее:

job {
  scm {
    git {
      remote {
        url(GIT_URL)
      }
      branch('master')
    }
  }
}

Он работает довольно хорошо, но я бы хотел, чтобы он установил для параметра «Извлечь в конкретную локальную ветвь» значение «master». Как это сделать?

Я ничего не нашел в https://github.com/jenkinsci/git-plugin/blob/master/src/main/java/hudson/plugins/git/GitSCM.java, указывающий на все, что можно использовать, но я могу что-то упустили.


person Noel Yap    schedule 13.01.2015    source источник


Ответы (3)


Эта опция в настоящее время не поддерживается в Job DSL, но вы можете использовать настроить блок, чтобы изменить сгенерированный XML-код конфигурации:

job {
  scm {
    git {
      remote {
        url(GIT_URL)
      }
      branch('master')
      configure { node ->
        node / 'extensions' << 'hudson.plugins.git.extensions.impl.LocalBranch' {
          localBranch('master')
        }
      }
    }
  }
}
person daspilker    schedule 13.01.2015

Поскольку принятый ответ был написан, была добавлена ​​поддержка «Выписки в конкретную локальную ветвь»:

job {
  scm {
    git {
      remote {
        url(GIT_URL)
      }
      branch('master')

      extensions {
        localBranch 'master'
      }
    }
  }
}
person samlewis    schedule 22.07.2016

Есть еще один способ сделать указанную локальную ветку:

multibranchPipelineJob(pathToJob) {
    branchSources { ... }
    configure {
        def traits = it / sources / data / 'jenkins.branch.BranchSource' / source / traits
        traits << 'jenkins.plugins.git.traits.LocalBranchTrait' {
            localBranch('**')
        }
    }
}
person Lee Meador    schedule 03.03.2020