2

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

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

构建在 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})

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

4

3 回答 3

4

添加一个名为的字符串参数BRANCH

将变量添加${BRANCH}到源代码管理会话下的“要构建的分支”(我在这里指的是 git,TFS 没有必要的更改)

使用以下url触发

http://<jenkins url>/job/<job name>/buildWithParameters?token=<your token>&BRANCH=<your branch>
于 2017-07-19T20:14:18.857 回答
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})
于 2020-06-26T09:54:39.380 回答
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'
    }

这使您能够使用默认值或使用参数请求构建的脚本提供的值。

$VARIABLE_NAME关键是,您可以通过使用或${VARIABLE_NAME}语法在 Jenkins 作业配置页面的任何位置“虚拟”轻松地引用您的构建参数。

希望有帮助。

PS 另外,这里是 Jenkins 中参数化构建插件的简要指南。

于 2017-07-19T19:54:09.280 回答