2017-05-28 1 views
0

Je suis en train de créer des emplois dans jenkins en utilisant le repos api et php7
sûr à 95% que j'ai besoin de cette demande commeEn utilisant php7 et boucle pour créer l'emploi dans jenkins via api

curl -s -XPOST 'http://jenkins/job/FolderName/createItem?name=yourJobName' --data-binary @config.xml -H "Content-Type:text/xml" --user user.name:YourAPIToken 

Mais je reçois toujours des erreurs telles que "Impossible de persister config.xml" et "Le contenu n'est pas autorisé dans le prologue". Je suppose que le problème apparaît parce que je n'utilise pas le --data-binaire param
Je ne peux pas comprendre comment le faire dans php 7 où nous utilisons "nouveau CurlFile
Pour la compréhension, voici mon code:

$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); 

dans $ xmlConfigurationFile est chemin du fichier
aussi il n'y a pas de problème avec auth, CSRF, création de dossier ou chemin du fichier

la question est:
Comment puis-je envoyer un fichier xml en binaire via curl en php7?

Merci à l'avance

+0

Avez-vous pensé à l'aide d'un PHP bibliothèque pour Jenkins? Il semble y en avoir quelques uns sur [packagist] (https://packagist.org/search/?q=jenkins). – StephenKing

Répondre

0

Je l'ai résolu
Je ne comprends pas la logique, mais ça marche pour moi
J'ai changé cette

curl_setopt($curl, CURLOPT_POSTFIELDS, Array('file' => new CurlFile($xmlConfigurationFile))); 

Où $ xmlConfigurationFile est le chemin de fichier. Pour ce

curl_setopt($curl, CURLOPT_POSTFIELDS, $xmlConfiguration); 

Où $ xmlConfiguration est le contenu du fichier
et travail a été créé

il sera cool si quelqu'un explication après, mais problème est résolu