Удаленно построить конкретный филиал Jenkins

Мне интересно, возможно ли указать ветку для построения при удаленном запуске задания Дженкинса. Я пишу скрипт на Python, который включает в себя запуск конкретной сборки 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})

Я не могу указать ветвь, которая будет построена, когда выполняется это задание, поскольку ветвь, которую нужно запустить, не может быть предварительно определена.

2 ответа

Добавьте строковый параметр с именем BRANCH

добавьте переменную ${BRANCH} к 'Ветвям для сборки' в сеансе Управления исходным кодом (я имею в виду git, внесите необходимые изменения для TFS)

используйте следующий URL для запуска

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

Вы можете сделать это, обновив свой 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})

Easy-peasy, используйте параметры сборки для этого. Например, допустим, у вас есть следующее определение задания в Jenkins (с использованием псевдокода Groovy-alike):

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

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

Что дает вам возможность использовать значение по умолчанию или значение, предоставленное сценарием, который запрашивает сборку с параметрами.

Дело в том, что вы можете легко ссылаться на ваши параметры сборки "практически" где угодно на странице конфигурации задания Jenkins, используя $VARIABLE_NAME или же ${VARIABLE_NAME} синтаксис.

Надеюсь, это поможет.

PS Также, вот краткое руководство по плагину Parametrized Build в Jenkins.

Другие вопросы по тегам