PHP利用Rest API實現遠程操控Jenkins

我們知道,Jenkins的Rest API可以使我們更加方便的去操控Jenkins。curl可以很容易的利用它去實現管理jenkins的配置和job。

關於用curl工具去操控jenkins這裏不再提,具體可以詳細看這篇博客點擊打開鏈接。這裏要說的使用php去實現curl工具同樣的功能。我們知道,php自身包含的有curl庫,那麼我們也完全可以用它自己的庫去實現。

通過剛剛那篇博客的介紹,我們可以大概的得到,要獲取jenkins的配置或者job信息,其實就是”對一個網址發出get請求,獲取請求的結果。”例如,獲取job名爲“jobName”的第2次構建的狀態信息,則curl命令爲

curl -XGET http://jenkinsServer/job/jobName/2/api/json

而要進行創建job或更改job、刪除job,其實就是“對一個網址發出post請求”,其中若是要更改job或創建job,還需要將新job的對應的配置信息(xml形式)post上去。

下面主要給出怎樣用php的curl實現curl工具同樣的功能

// jenkins賬號、密碼、服務器地址
$ciuser = 'user';
$cipwd = '1234';
$home_url = 'http://jenkinsServer/';


// 獲取job的信息或狀態
function getCurl($url){
    //初始化
    $curl = curl_init();//設置抓取的url
    curl_setopt($curl, CURLOPT_URL, $url);
    //設置頭文件的信息作爲數據流輸出
    curl_setopt($curl, CURLOPT_HEADER, 1);
    //設置獲取的信息以文件流的形式返回,而不是直接輸出。
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    //執行命令
    curl_setopt($curl, CURLOPT_USERNAME, $GLOBALS['ciuser']);
    curl_setopt($curl, CURLOPT_PASSWORD, $GLOBALS['cipwd']);
    $data = curl_exec($curl);
    //關閉URL請求
    curl_close($curl);
    //返回獲得的數據

    return $data;
}


// 用於創建新的job、更改job等post請求
function postUrL($url, $xml=""){
    //初始化
    $curl = curl_init();
    //設置抓取的url
    curl_setopt($curl, CURLOPT_URL, $url);
    //設置頭文件的信息作爲數據流輸出
    curl_setopt($curl, CURLOPT_HEADER, 1);
    //設置獲取的信息以文件流的形式返回,而不是直接輸出。
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    //設置post方式提交
    curl_setopt($curl, CURLOPT_POST, 1);
    //設置post數據
    curl_setopt($curl, CURLOPT_USERNAME, $GLOBALS['ciuser']);
    curl_setopt($curl, CURLOPT_PASSWORD, $GLOBALS['cipwd']);

    curl_setopt($curl, CURLOPT_POSTFIELDS, $xml);
    curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-type:text/xml'));
    //執行命令
    $data = curl_exec($curl);
    //關閉URL請求
    curl_close($curl);
}

若是創建或更改job,則postUrl函數的第二個參數$url應爲對應job配置信息xml文件的文本內容。上面兩個函數的第一個參數$url都爲請求時的絕對地址。

剛學php,有不對的地方還請指正。網上還有另一種方法是用php的exec去調用curl命令。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章