phpでジェンキンスのジョブを実行するコードを書いたので晒してみます。 パラメータ付きビルド、パラメータなしビルド両方に対応できるように致しました。

ジェンキンスのトークンを使用しますので、取得をお願いいたします。 取得方法はこちらなどを参考に。 Jenkinsのジョブをリモートから実行する方法

また、今回必要がなかったのでやってませんが、 場合によってはURLのエンコードが必要になるかもしれません。

では、ソースコードです。

ソースコード

<?php
/**
 * コントローラー
 */
function controller() {
  $servername = "XXXXXXXXXXXXXXXX";
  $username = "XXXXXXXXXXXXXXXX";
  $api_token = "XXXXXXXXXXXXXXXX";
  $job_name = "XXXXXXXXXXXXXXXX";
  $parameters = [
    "param1" => "value1",
    "param2" => "value2",
  ];

  $result = doJenkinsJob($servername, $username, $api_token, $job_name, $parameters);
}

/**
 * jenkinsのジョブを実行する
 * @param {String} $servername - サーバ名
 * @param {String} $username - ユーザ名
 * @param {String} $api_token - APIトークン
 * @param {String} $job_name - ジョブ名
 * @param {Array} $parameters - パラメータ。パラメータなしの場合は空配列を指定。
 * @return 実行結果
 */
function doJenkinsJob($servername, $username, $api_token, $job_name, $parameters = array()) {
  $context = stream_context_create([
    'http' => [
      'method'=> 'POST',
    ]
  ]);

  $url = "http://{$username}:{$api_token}@{$servername}/job/{$job_name}/";
  if(count($parameters) > 1) {
    $url .= "buildWithParameters";
    return file_get_contents($url . '?' . http_build_query($parameters), false, $context);
  } else {
    $url .= "build";
    return file_get_contents($url, false, $context);
  }
}
?>

controller()内の変数に環境に合わせて設定をしてください。 あとはcontroller()を実行すればビルドが走るはずです。 パラメータなしのビルドの場合は$parameters = [];と空配列を渡せば良いです。

ビルドできましたでしょうか。

余談

curlコマンドでもジョブを実行できます。 要はPOST形式でジェンキンスにリクエストを飛ばせれば良い。

curl -X POST --user ${USER_NAME}:${API_TOKEN} \
http://${HOST_NAME}/job/${JOB_NAME}/buildWithParameters?${パラメーター}

参考