Я пытаюсь создать работу в jenkins, используя rest API и php7
95% уверен, что мне нужен такой запрос
curl -s -XPOST 'http://jenkins/job/FolderName/createItem?name=yourJobName' --data-binary @config.xml -H "Content-Type:text/xml" --user user.name:YourAPIToken
Но я всегда получаю такие ошибки, как «Не удалось сохранить config.xml» и «Содержимое не разрешено в прологе». Я предполагаю, что проблема возникает из-за того, что я не использую параметр --data-binary
Я просто не могу понять, как это сделать в php 7, где мы используем "новый CurlFile
Для понимания, вот мой код:
$url = static::$host.'/job/'.$folderName.'/createItem?name='.$jobname;
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, Array('file' => new CurlFile($xmlConfigurationFile)));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_USERPWD, static::$user.":".static::$pass);
$headers = array('Content-Type: text/xml');
if ($jenkins->areCrumbsEnabled()){
$headers[] = $jenkins->getCrumbHeader();
}
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($curl);
В $xmlConfigurationFile есть путь к файлу
Также нет проблем с авторизацией, csrf, созданием папки или путем к файлу
Итак, вопрос:
Как я могу отправить xml файл в двоичном виде через curl в php7?
заранее спасибо