版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaobai_ol/article/details/79380850
我们知道,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命令。