При использовании jenkins API возникает ошибка reconfig_job

Я использую jenkins rest API для рекурсии через задания, а затем перенастраиваю это. Все методы работают, кроме одного. Он мой код:

def get_server_instance():
    jenkins_url = 'xxxx'
    #server = Jenkins(jenkins_url, username = '', password = '')
    # Connect to instance - username and password are optional
    server = jenkins.Jenkins(jenkins_url, username = '', password = '')
    return server


def get_job_details():
    # Refer Example #1 for definition of function 'get_server_instance'
    server = get_server_instance()
    for job in server.get_jobs_list():
        if job == "GithubMigration":
            configuration = server.get_job(job).get_config().encode('utf-8')
            #server.reconfig_job(job, configuration)
            if server.has_job("GithubMigration"):
                server.reconfig_job('GithubMigration', config_xml)

Он получает мой файл configuration.xml, также находит задание, но терпит неудачу на server.reconfig_job('GithubMigration', config_xml) с ошибкой AttributeError: объект Jenkins не имеет атрибута 'reconfig_job'

когда очевидно, что эти функции существуют в API-интерфейсе jenkins rest, и да, я импортирую jenkins из jenkinsapi.jenkins import Jenkins .

Редактировать 1. Я удалил Jenkinsapi и имею только модуль python-jenkins, и теперь он терпит неудачу даже перед тем, как сказать

AttributeError: объект 'module' не имеет атрибута 'Jenkins' для строки : AttributeError: объект 'module' не имеет атрибута 'Jenkins'

Любые идеи?

Редактировать 2:

Я пробовал исключительно API python-jenkins и пробовал их собственный пример, как вы видите здесь http://python-jenkins.readthedocs.org/en/latest/example.html

import jenkins
j = jenkins.Jenkins('http://your_url_here', 'username', 'password')
j.get_jobs()
j.create_job('empty', jenkins.EMPTY_CONFIG_XML)
j.disable_job('empty')
j.copy_job('empty', 'empty_copy')
j.enable_job('empty_copy')
j.reconfig_job('empty_copy', jenkins.RECONFIG_XML)

Даже это не работает в jenkins.Jenkins с ошибкой атрибута в Jenkins - нет модуля.

Я почти уверен, что API сломан.


person Scooby    schedule 01.02.2015    source источник
comment
Где вы нашли этот метод? Можете ли вы добавить ссылку на документацию по методу reconfig_job?   -  person Chemik    schedule 02.02.2015
comment
@Chemik — если вы перейдете по следующей ссылке в официальной документации — python-jenkins. readthedocs.org/en/latest/api.html и найдите reconfig_job, вы найдете его там.   -  person Scooby    schedule 02.02.2015
comment
Хорошо, но я не могу найти методы get_jobs_list() и get_job(job). Проблема в том, что вы смешиваете python-jenkins и jenkinsapi (документы здесь). Вы должны import jenkins не from jenkinsapi.jenkins import Jenkins. Кстати, вы должны изменить свой пароль, этот замечательный сайт хранит историю редактирования сообщений;)   -  person Chemik    schedule 03.02.2015
comment
уже сделал это (пароль), но позвольте мне вернуться к вам с другими моими выводами.   -  person Scooby    schedule 03.02.2015
comment
@Chemik - зацените мою новую редакцию.   -  person Scooby    schedule 03.02.2015
comment
Я почти уверен, что ваша установка python-jenkins не работает. Я рекомендую удалить его и переустановить с помощью pip (см. документацию)   -  person Chemik    schedule 04.02.2015
comment
@Chemik - я делал это уже 4 раза без документации. Вы привели пример, у них есть быстрая попытка и посмотреть, работает ли это для вас?   -  person Scooby    schedule 04.02.2015
comment
Да, конечно. Попробуйте это: print jenkins.__file__ сразу после импорта и проверьте, совпадает ли он с вашим путем установки модуля. Бьюсь об заклад, у вас есть файл jenkins.py в каталоге, где находится ваш скрипт.   -  person Chemik    schedule 04.02.2015
comment
@Chemik - /Users/kaulk/Desktop/JenkinsWrap/jenkins.py - вот что напечатал. Все еще не уверен, что это за ошибка. В любом случае я смог решить эту проблему с помощью jenkinsapi. У меня есть еще один вопрос, и, возможно, вы сможете ответить. Как получить доступ к рабочему пространству любой работы в jenkins через jenkinsapi? Мне нужно получить доступ к файлу в рабочей области...   -  person Scooby    schedule 04.02.2015
comment
Если у вас есть другой вопрос, пожалуйста, создайте новый.   -  person Chemik    schedule 05.02.2015


Ответы (3)


Ваш скрипт, вероятно, импортирует неправильный модуль. Вы можете проверить это следующим образом:

import jenkins
print jenkins.__file__

Если напечатанный путь отличается от пути установки модуля jenkins (например, C:\Python27_32\lib\site-packages\jenkins\__init__.pyc), вам следует проверить pythonpath:

import sys
print sys.path

Распространенной проблемой является наличие скрипта python с тем же именем, что и импортированный модуль в текущем каталоге, который находится на первом месте в пути поиска ''.

Для получения дополнительной информации о порядке импорта см. путь поиска модуля

person Chemik    schedule 04.02.2015

После @Chemik answer , я понял, что написанный мной скрипт назывался jenkins.py и он конфликтовал с импортом python-jenkins.

Библиотека не сломана. Проверьте имя вашего скрипта.

person liraop    schedule 31.10.2019

пришлось добавить другое решение при выполнении той же команды

server = jenkins.Jenkins(jenkins_url, username = '', password = '')

я получил ошибку:

'jenkins' has no attribute 'Jenkins'

моя ошибка заключалась в том, что при установке пакета я установил пакет «jenkins», а пакет, который мне был нужен, - «python-jenkins». документы можно найти: документы python-jenkins

так что я должен был сделать это просто

pip install python-jenkins
person Dolevn    schedule 23.03.2020