Рубрики
Без рубрики

Как извлечь извлечение информации из Дженкинса с Python

Узнайте, как извлечь извлечение информации от Jenkins, используя язык программирования Python

Автор оригинала: Mike Driscoll.

Я работаю с непрерывной интеграцией программного обеспечения как часть моей работы. Я использую как Хадсон, так и Дженкинс в своей роли, и иногда нужно взаимодействовать с ними программно. Есть два пакета Python, которые вы можете использовать для этой задачи:

Пакет 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. Например, вы можете использовать его, чтобы начать работу постройки, создать новую работу или удалить старую, а также довольно много других. К сожалению, документация – это довольно бочные кости, поэтому вам придется сделать справедливый бит экспериментов, чтобы она работала так, как вы хотите.

Дополнительное чтение