爲了爲我們的應用程序創建統一的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服務器上。 (儘管您添加的附加信息表明在此之前還存在問題)。 –