Jenkins APIを使用する
JenkinsAPIを使用すると、Jenkinsサービスのステータスを照会したり、構成を変更したり、ノードまたはジョブのステータスを自動的に監視したりできます。
例1:jenkinsバージョンを取得する
Jenkinsのバージョンを取得する
from jenkinsapi.jenkins import Jenkins
def get_server_instance():
jenkins_url = 'http://jenkins_host:8080'
server = Jenkins(jenkins_url, username='foouser', password='foopassword')
return server
if __name__ == '__main__':
print get_server_instance().version
上記のコードは、ホストjenkins_hostで実行されているJenkinsのバージョンを示しています。
Jenkinsバージョン1.426以降では、Jenkinsインスタンスに対してユーザーを認証するときに、実際のパスワードの代わりにAPIトークンを指定できます。ユーザーがAPIトークンを生成する方法の詳細については、Jenkis Wikiページ「Authentication of Script Clients」を参照してください。APIトークンを取得したら、Jenkins APIを使用してJenkinsサーバーインスタンスを作成するときに、実際のパスワードの代わりにAPIトークンを渡すことができます。
例2:Jenkinsサービスのジョブの詳細を取得する
Jenkinsサーバーで実行されているジョブの詳細を取得する
"""Get job details of each job that is running on the Jenkins instance"""
def get_job_details():
# Refer Example #1 for definition of function 'get_server_instance'
server = get_server_instance()
for job_name, job_instance in server.get_jobs():
print 'Job Name:%s' % (job_instance.name)
print 'Job Description:%s' % (job_instance.get_description())
print 'Is Job running:%s' % (job_instance.is_running())
print 'Is Job enabled:%s' % (job_instance.is_enabled())
例3:Jenkinsジョブをキャンセル/開始する
Jenkinsジョブを無効/有効にする
"""Disable a Jenkins job"""
def disable_job():
# Refer Example #1 for definition of function 'get_server_instance'
server = get_server_instance()
job_name = 'nightly-build-job'
if (server.has_job(job_name)):
job_instance = server.get_job(job_name)
job_instance.disable()
print 'Name:%s,Is Job Enabled ?:%s' % (job_name,job_instance.is_enabled())
job_instance.enable()
Jenkinsジョブを開始するために使用し ます。
例4:プラグインの詳細を取得する
プラグインの詳細を取得する
Jenkinsインスタンスにインストールされているプラグインの詳細を取得する
def get_plugin_details():
# Refer Example #1 for definition of function 'get_server_instance'
server = get_server_instance()
for plugin in server.get_plugins().values():
print "Short Name:%s" % (plugin.shortName)
print "Long Name:%s" % (plugin.longName)
print "Version:%s" % (plugin.version)
print "URL:%s" % (plugin.url)
print "Active:%s" % (plugin.active)
print "Enabled:%s" % (plugin.enabled)
例5:完了したビルドタスクのビルドバージョン情報を取得する
完了したビルドからバージョン情報を取得する
これはJenkinsAPIの典型的な使用法です。これは、プロジェクトを最初にビルドしたときに最初に考えた使用法です。継続的インテグレーション環境では、最後に成功したビルドのバージョン管理情報をプログラムで検出できるようにする必要があります。特定のリリースプロセスをトリガーするため。
from jenkinsapi.jenkins import Jenkins
def getSCMInfroFromLatestGoodBuild(url, jobName, username=None, password=None):
J = Jenkins(url, username, password)
job = J[jobName]
lgb = job.get_last_good_build()
return lgb.get_revision()
if __name__ == '__main__':
print getSCMInfroFromLatestGoodBuild('http://localhost:8080', 'fooJob')
Gitソースコード管理システムで使用すると、20行目は「8b4f4e6f6d0af609bb77f95d8fb82ff1ee2bba0d」のようなものを出力します。これはGitバージョン番号のように見えます。