Удаленно построить конкретный филиал 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.