1

私はjenkins rest APIを使用してジョブを再帰し、これを再構成しています。1 つを除いて、すべての方法が機能します。彼は私のコードです:

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' object has no attribute 'reconfig_job' で失敗します

明らかにこの関数がjenkins rest APIに存在し、はい、 jenkinsapi.jenkins import Jenkins からジェンキンをインポートしています。

編集 1 - Jenkinsapi をアンインストールし、python-jenkins モジュールしか持っていないのに、言う前に失敗するようになりました

AttributeError: 'module' object has no attribute 'Jenkins' for line : AttributeError: 'module' object has no attribute '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で失敗し、Jenkinsで属性エラーが発生します-モジュールがありません。

APIが壊れていると確信しています。

4

3 に答える 3

9

スクリプトが間違ったモジュールをインポートしている可能性があります。次のように確認できます。

import jenkins
print jenkins.__file__

印刷されたパスが jenkins モジュールのインストール パス (例C:\Python27_32\lib\site-packages\jenkins\__init__.pyc) 以外の場合は、pythonpath を確認する必要があります。

import sys
print sys.path

よくある問題は、現在のディレクトリにインポートされたモジュールと同じ名前の python スクリプトが存在することです。これは、検索パスの最初の場所にあります''

インポート順序の詳細については、モジュールの検索パスを参照してください

于 2015-02-04T23:22:08.593 に答える