为了为我们的应用程序创建统一的CICD过程,我试图连接到我的Jenkins远程访问API,利用这个(文档记录不完整)Jenkins-PHP API,它本质上是所使用的cURL函数的包装用于访问远程网站。使用PHP连接到Jenkins远程API
这里是我的测试连接:
$uname = '';
$pword = '';
$api_token = ''; // not yet used
$jenkins = new \JenkinsKhan\Jenkins("http://$uname:[email protected]/jobs");
var_dump($jenkins->isAvailable());
这将返回:
布尔(假)
的isAvailable()
功能,詹金斯API类的部分是:
public function isAvailable()
{
$curl = curl_init($this->baseUrl . '/api/json');
curl_setopt($curl, \CURLOPT_RETURNTRANSFER, 1);
curl_exec($curl);
if (curl_errno($curl)) {
return false;
} else {
try {
$this->getQueue();
} catch (RuntimeException $e) {
//en cours de lancement de jenkins, on devrait passer par là
return false;
}
}
return true;
}
编辑:我在功能上增加了一个echo curl_error($curl);
到有条件的,它返回:
无法解析主机%MADA
注:我正在运行的Web服务器和詹金斯实例上同一个网络和Jenkins实例可以ping通。
我发现堆栈溢出的一些未解答的问题是相似的,如this one但没有其他人直接解决连接到Jenkins实例的问题。
如果我更改URL字符串(删除用户名,用API令牌等替换密码),我至多得到身份验证错误和至少403(拒绝访问),所以我觉得尽管我正在取得一些进展,但我相信Jenkins实例不会发生真正的身份验证。
我在这里错过了一些明显的东西吗?我怎样才能真正连接到Jenkins远程API?
看起来你会碰到'jenkins.svc.local/jobs/api/json'而不是'jenkins.svc.local/api/json'(即构造函数中的URL是错误的) –
所有远程API的文档说你应该打开URL加'/ api/json' @DarenChandisingh为什么你认为这个URL是错误的?顺便说一句,用更多的错误信息编辑这个问题。 –
我认为这是错误的,因为您使用jenkins.svc.local/**作业**,但我期望API直接位于根目录下。它无论如何都在我的Jenkins服务器上。 (尽管您添加的附加信息表明在此之前还存在问题)。 –