Автор оригинала: Mike Driscoll.
Я работаю с непрерывной интеграцией программного обеспечения как часть моей работы. Я использую как Хадсон, так и Дженкинс в своей роли, и иногда нужно взаимодействовать с ними программно. Есть два пакета Python, которые вы можете использовать для этой задачи:
- Python Jenkins упаковка
- Jenkinsapi.
Пакет Python Jenkins будет работать как с Гудзоном, так и Дженкинсом, который Jenkinsapi работает только с Дженкинсом. Я обычно использую Python Jenkins из-за этого, хотя я недавно начал смотреть, чтобы увидеть, какой из них лучше работает с артефактами, и я обнаружил, что Дженкинсапи на самом деле лучше для такого рода вещи. Таким образом, вам нужно будет оценить обе эти пакеты в зависимости от того, что вам нужно сделать.
Установите Python Jenkins.
Чтобы следить с примерами кода в этой статье, вам нужно будет установить Python Jenkins. Вы можете использовать Pip для этого:
pip install python-jenkins
Теперь, когда это установлено, давайте дадим Python Jenkins a Whirl!
Получить все работы от Дженкинса
Одна общая задача, необходимая для получения списка всех заданий, настроенных в вашей системе сборки.
Чтобы начать, вам нужно войти в свой сервер Jenkins:
import jenkins server = jenkins.Jenkins('http://server:port/', username='user', password='secret')
Теперь у вас есть объект jenkins, который вы можете использовать для выполнения запросов на отдых на сервере Jenkins CI. Результаты, которые возвращаются, обычно являются словарь Python или словарь словарей.
Вот пример получения всех заданий, настроенных на вашей системе CI:
import jenkins server = jenkins.Jenkins('http://server:port/', username='user', password='secret') # Get all builds jobs = server.get_all_jobs(folder_depth=None) for job in jobs: print(job['fullname'])
Это будет петлен по всему заданиям, которые настраиваются в Jenkins и распечатывают их имена рабочих мест.
Получение информации о работе
Теперь, когда вы знаете имена рабочих мест на вашем коробке Jenkins, вы можете получить более подробную информацию о каждой работе.
Вот как:
import jenkins server = jenkins.Jenkins('http://server:port/', username='user', password='secret') # Get information on specific build job # This returns all the builds that are currently shown in # hudson for this job info = server.get_job_info('job-name') # Passed print(info['lastCompletedBuild']) # Unstable print(info['lastUnstableBuild']) # Failed print(info['lastFailedBuild'])
get_job_info () предоставит вам много информации о работе, включая все сохраненные в настоящее время сборки. Приятно быть в состоянии извлекать, какие сборки прошли, не удалось или нестабильны.
Получение построения информации
Если вы хотите знать, как долго выполняется работа, чтобы запустить работу, вам нужно добраться до уровня сборки.
Давайте узнаем, как:
import jenkins server = jenkins.Jenkins('http://server:port/', username='user', password='secret') info = server.get_job_info('job-name') # Loop over builds builds = info['builds'] for build in builds: for build in builds: print(server.get_build_info('job-name', build['number']))
Чтобы получить сборку метаданных, вам нужно позвонить get_build_info (). Этот метод принимает имя работы и номер сборки и возвращает метаданные в виде словаря.
Обертывание
Вы можете сделать намного больше с пакетом Python Jenkins. Например, вы можете использовать его, чтобы начать работу постройки, создать новую работу или удалить старую, а также довольно много других. К сожалению, документация – это довольно бочные кости, поэтому вам придется сделать справедливый бит экспериментов, чтобы она работала так, как вы хотите.
Дополнительное чтение
- Python Jenkins документация
- Jenkinsapi документация