如何使用groovy为Jenkins作业设置git分支

时间:2014-10-21 20:39:37

标签: git groovy jenkins

我正在寻找一种使用Groovy创建多个项目的方法。预计詹金斯的建筑商数量将大幅增长。

我已经有一个简单的机制来读取JSON文件并创建其他项目。但是,我仍然坚持在这个项目上配置Git信息的过程。

我已经这样做了:

def repository = 'my repo....'
job.scm = new hudson.plugins.git.GitSCM(repository)

但是,使用这个GitSCM构造函数我只能设置存储库,但没有其他配置。 我没有找到另一种方法来设置每个配置。

有人知道如何设置:分支,凭证等

谢谢!

4 个答案:

答案 0 :(得分:0)

我认为这是Jenkins Job-dsl plugin

的工作

允许您在Jenkins中构建(和维护)其他项目作为另一个项目。这是作为具有自己的DSL

的构建步骤实现的
job {
    name 'GitJob'
    scm {
        git('git://github.com/JavaPosseRoundup/job-dsl-plugin')
    }
}

来自职位参考的git section

// checkout repo1 to a sub directory and clean the workspace after checkout
git {
    remote {
        name('remoteB')
        url('git@server:account/repo1.git')
    }
    clean()
    relativeTargetDir('repo1')
}

答案 1 :(得分:0)

我找到了一种不会让我开心的方式,但是...

此方法需要一个模板项目,在这种情况下,这个基本项目将GIT配置为SCM。该流程仅更改项目存储库和分支以构建。

// Create a new Job from template
def template = hudson.model.Hudson.instance.getItem('Basic Template')
job = hudson.model.Hudson.instance.copy(template, 'New Project')

// Add a description
job.setDescription(currentProject.description)

// Get GitSCM ann change its values
def gitScm = job.scm
// Change REpository
gitScm.userRemoteConfigs[0].url = currentProject.repository
// Change branch to build
gitScm.branches = [new hudson.plugins.git.BranchSpec(currentProject.version)]

// Get the build list
def bld = job.getBuildersList()
bld.clear()

// Add a new shell task
def shell = new hudson.tasks.Shell(valu)
bld.add(shell)

// Add this project to a view.
tView.add(job)

这使我的项目动态创建。

答案 2 :(得分:0)

试试这个并希望它有所帮助:

def getbranches = ("git ls-remote -h https://github.com/some.git").execute()

return getbranches .text.readLines()
         .collect { it.split()[1].replaceAll('refs/heads/', '')  }
         .unique()
         .findAll { it.startsWith('r') }

答案 3 :(得分:0)

另一种选择,如果您不想使用/学习DSL:

def repository = 'your repo...'
job.scm = new hudson.plugins.git.GitSCM(repository)
job.scm.userRemoteConfigs[0].credentialsId = 'your credentials...'

// branches
job.scm.branches[0].name = '*/master'
job.scm.branches[1].name = '*/develop'
job.scm.branches[2].name = '*/release.*'

// extension
identity = new hudson.plugins.git.extensions.impl.UserIdentity('jenkins', 'jenkins@yourdomaine.com')
job.scm.extensions.add(identity)

job.save()