远程构建特定的Jenkins分支

时间:2017-07-19 19:25:01

标签: python git jenkins tfs jenkins-api

我想知道在远程触发Jenkins作业时是否可以指定要构建的分支。我正在编写一个Python脚本,涉及运行特定的Jenkins构建。

我能够成功地从我的脚本运行构建,但我想知道是否有办法使构建针对特定分支运行。

构建在Jenkins上运行,我正在使用TFS进行源代码管理。

这就是我调用这个工作的方式 - 我试图添加参数,但这没有做任何事情。

var result = listEx.SelectMany(ex => ex.Test.Select(test => test.arrayLong)).ToArray();

当此作业运行时,我无法指定要构建的分支,因为无法预先确定需要运行的分支。

3 个答案:

答案 0 :(得分:1)

添加名为BRANCH的字符串参数

将变量$ {BRANCH}添加到源代码管理会话下的'要构建的分支'(我在这里引用git,对TFS进行必要的更改)

使用以下网址触发

http://<jenkins url>/job/<job name>/buildWithParameters?token=<your token>&BRANCH=<your branch>

答案 1 :(得分:0)

Easy-peasy,使用构建参数。例如,假设您在Jenkins中使用以下作业定义(使用类似Groovy的伪代码):

[Project PR_DataCollectionWeb]
    parameters: { GIT_BRANCH: typeof(String), defaultValue: 'master' }

    sourceCodeManagement: {
        repositoryUrl: 'https://github.com/.../awesome.git',
        branchSpecifier: '*/$GIT_BRANCH'
    }

这使您能够使用默认值或脚本请求使用参数进行构建。

关键是,您可以轻松地参考您的构建参数“虚拟地”&#39;使用$VARIABLE_NAME${VARIABLE_NAME}语法在Jenkins作业配置页面中的任何位置。

希望有所帮助。

P.S。另外,这里是詹金斯Parametrized Build插件的简要指南。

答案 2 :(得分:0)

您可以通过将job = a.get_job("Project PR_DataCollectionWeb")行更新为类似job = a["{}/{}".format(project, branch)]的方式来做到这一点。

这是一个完整的例子:

from jenkinsapi.jenkins import Jenkins
from jenkinsapi.utils.crumb_requester import CrumbRequester

crumb_requester = CrumbRequester(username=USERNAME, password=PASSWORD, baseurl=URL)
jenkins = Jenkins(URL, username=USERNAME, password=PASSWORD, requester=crumb_requester)
job = jenkins["{}/{}".format(project, branch)]
queue_item = job.invoke(build_params={'build_type': build_type})