我們知道,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命令。