2017-07-19 118 views
0

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

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

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

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

crumb=CrumbRequester(username="admin", password="2fa99c1e2aa61671d6b4334c8f0e77af", baseurl='http://localhost:8080/') 
a = Jenkins('http://localhost:8081/', username="admin", password="2fa99c1e2aa61671d6b4334c8f0e77af", requester=crumb) 
job = a.get_job("Project PR_DataCollectionWeb") 
job.invoke(build_params={'GIT_BRANCH': git_branch}) 

我不能指定一个分支时,该工作为需要运行不能预先确定的分支运行到建成。

回答

0

易于使用,使用生成参数。例如,假设你有詹金斯以下作业定义(使用Groovy的一致好评伪代码):

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

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

从而使您能够使用默认值或请求该脚本提供的一个能力用参数构建。关键是,通过使用$VARIABLE_NAME${VARIABLE_NAME}语法,您可以轻松地在Jenkins作业配置页的任何位置轻松引用您的构建参数。

希望有所帮助。

P.S.另外,这里是关于Jenkins中的Parametrized Build插件的简要指南。

+0

谢谢!当我在原始文章中使用代码并检查构建参数时,我没有看到它。因此,它永远不会真正被注册为我的构建的参数,我不能在任何地方使用它。我安装了参数化版本,我有一个默认值,这是唯一运行的。 – kicksticks

+0

这是因为构建参数无法在查询字符串中传输 - 仅在表单编码格式的请求主体中才有。 'GIT_BRANCH = feature-a&PARAM_A = xyz&PARAM_B = xoxo&...'它必须是一个POST请求。 – pabloduo

1

叫BRANCH字符串参数

添加变量$ {BRANCH}添加到受源代码管理会议“分行打造”(我这里指的git,做TFS必要的修改)

使用以下url来触发

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