2014年7月23日水曜日

JenkinsのAPIを使ってみた

http://localhost:8080/ でジョブの一覧が見れるJenkinsで試した結果です
認証のユーザ情報は「Jenkinsのユーザーデータベース」を利用しています
簡単なGET系のリクエストのみとなります

環境
サーバ
Jenkins 1.517
CentOS 6.3

クライアント
Ruby 2.0.0

■CURLでリクエスト
curl --user username:password http://localhost:8080/api/json?pretty=true

■レスポンスサンプル
{
  "assignedLabels" : [
    {
      
    }
  ],
  "mode" : "NORMAL",
  "nodeDescription" : "the master Jenkins node",
  "nodeName" : "",
  "numExecutors" : 5,
  "description" : "description",
  "jobs" : [
    {
      "name" : "job001",
      "url" : "http://localhost:8080/job/job001/",
      "color" : "blue"
    },
    {
      "name" : "job002",
      "url" : "http://localhost:8080/job/job002/",
      "color" : "blue"
    }
  ],
  "overallLoad" : {
    
  },
  "primaryView" : {
    "name" : "view",
    "url" : "http://localhost:8080/"
  },
  "quietingDown" : false,
  "slaveAgentPort" : 0,
  "unlabeledLoad" : {
    
  },
  "useCrumbs" : false,
  "useSecurity" : true,
  "views" : [
    {
      "name" : "view",
      "url" : "http://localhost:8080/"
    },
    {
      "name" : "view02",
      "url" : "http://localhost:8080/view/view02/"
    }
  ]
}

■rubyから実施
#!/usr/bin/ruby
# -*- coding: utf-8 -*-
require 'open-uri'
require 'json'

uri = "http://localhost:8080/api/json?pretty=true"
auth = ['username', 'password']
#f = open(uri, {:http_basic_authentication => auth})
f = open(uri, {:http_basic_authentication => auth, :proxy => 'http://proxyname:8080/'})

json = JSON.parse(f.read)

json['jobs'].each { |i|
  p i['url']
}

ジョブのURL一覧がずらっと表示されます

特に認証を気にせずJSONでちゃちゃっと取得するだけならこれで十分そうですね
時間があればPOST系のリクエストも試してみたい

0 件のコメント:

コメントを投稿