0

Jenkins job通过以下PHP脚本触发:

<?php

$testrun_id = "1744";
$cmd = "curl -X POST http://build:f9280f75396f83a0@mobile-jenkins.domain.com:8080/job/android-test/build --data-urlencode  json='{\"parameter\": [{\"name\":\"POST_RESULTS\", \"value\":\"true\"}, {\"name\":\"RUN_ID\", \"value\":\"{$testrun_id}\"}, {\"name\":\"CHECK_NAME\", \"value\":\"SampleAutomatedPlan\"}]}'";
exec($cmd,$result);

?>

该脚本在Mac上成功运行,并且 jenkins 作业确实被触发。如何使此脚本在Windows上运行?在Windows上运行 PHP 脚本时出现以下错误?

在此处输入图像描述

curl is already installed on windows machine. 另外,有没有更好的方法在 PHP 中做 cURL?看看这个:http ://php.net/manual/en/book.curl.php,有人可以根据我在上面的 PHP 脚本(适用于Windows)中的 curl 命令指向一个示例吗?我的脚本中基于 curl 命令的示例将是理想的。

4

2 回答 2

2

您应该从这里查看示例http://php.net/manual/en/curl.examples.php

波纹管是你的情况下的代码,

$url = "http://build:f9280f75396f83a0@mobile-jenkins.domain.com:8080/job/android-test/buildWithParameters";     
$data = "POST_RESULTS=true&RUN_ID=".$testrun_id."&CHECK_NAME=SampleAutomatedPlan";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);  
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 

// $output contains the output string
$output = curl_exec($ch);

// close curl resource to free up system resources
curl_close($ch);    
于 2016-07-02T06:26:07.433 回答
0

您需要为 JSON 设置内容类型

curl -H "Content-Type: application/json" -X POST http://build:f9280f75396f83a0@mobile-jenkins.domain.com:8080/job/android-test/build --data-urlencode  json='{\"parameter\": [{\"name\":\"POST_RESULTS\", \"value\":\"true\"}, {\"name\":\"RUN_ID\", \"value\":\"{$testrun_id}\"}, {\"name\":\"CHECK_NAME\", \"value\":\"SampleAutomatedPlan\"}]}'";

只要确保你没有任何混合匹配的值。

于 2016-07-02T06:44:12.190 回答