使用jenkins API时,在reconfig_job上出现故障

时间:2015-02-01 21:05:43

标签: python python-2.7 python-3.x jenkins jenkins-cli

我正在使用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:'詹金斯'对象没有属性' reconfig_job'

显然这个函数存在于jenkins rest API中,是的我导入jenkins,来自jenkinsapi.jenkins导入Jenkins。

编辑1 - 我卸载了Jenkinsapi并且只有python-jenkins模块,现在它甚至在说

之前就失败了

AttributeError:' module'对象没有属性' Jenkins' for line:AttributeError:' module'对象没有属性' Jenkins'

有什么想法吗?

编辑2:

我只尝试了python-jenkins API并尝试了他们自己的例子,如你所见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失败属性错误 - 没有模块。

我很确定API已被破坏。

3 个答案:

答案 0 :(得分:4)

您的脚本可能导入了错误的模块。您可以按如下方式检查:

import jenkins
print jenkins.__file__

如果打印路径不是jenkins模块的安装路径(例如C:\Python27_32\lib\site-packages\jenkins\__init__.pyc),那么你应该检查pythonpath:

import sys
print sys.path

常见问题是存在与当前目录中导入模块同名的python脚本,它位于搜索路径''的第一位。

有关导入订单的详细信息,请参阅module search path

答案 1 :(得分:1)

@Chemik answer之后,我意识到我编写的脚本名为jenkins.py,并且与python-jenkins导入冲突。

库没有损坏。检查您的脚本名称。

答案 2 :(得分:1)

必须在运行同一命令时添加另一个解决方案

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

我得到了错误:

'jenkins' has no attribute 'Jenkins'

我的错误是在安装软件包时,我安装了软件包“ jenkins”,而我需要的软件包是“ python-jenkins”。 可以找到文档: python-jenkins docs

所以我要做的就是

pip install python-jenkins