我想知道在远程触发Jenkins作业时是否可以指定要构建的分支。我正在编写一个Python脚本,涉及运行特定的Jenkins构建。
我能够成功地从我的脚本运行构建,但我想知道是否有办法使构建针对特定分支运行。
构建在Jenkins上运行,我正在使用TFS进行源代码管理。
这就是我调用这个工作的方式 - 我试图添加参数,但这没有做任何事情。
var result = listEx.SelectMany(ex => ex.Test.Select(test => test.arrayLong)).ToArray();
当此作业运行时,我无法指定要构建的分支,因为无法预先确定需要运行的分支。
答案 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})