2017-02-16 2 views
0

私の会社のマシンからジェンキンスジョブをトリガーし、成功したかどうかを返します。現在私は作成したURL(プライバシー保護用)を使ってジョブをトリガーすることができるので、URLが正しいか、パラメータが正しく渡されているかのように感じられ、コンソール出力に表示されます。そこには大丈夫です。しかし、ビルドが成功したかどうかを知りたい。リモートでビルドをトリガーした後にJenkinsからの応答を取得するには

ほとんどの例から、成功を示すステータスコード(201)を持つジェンキンズからの応答があります。しかし、私はコールバック関数で何も受け取っていません。何か案は?

function onButtonClick() 
{ 
    var JenkinsURL = "http://mycompany:8080/view/project/job/jobname/buildWithParameters?token=TokenHere"; 

    var params = new Object(); 
    params.Data1 = "Data"; 
    params.Data2 = ""; 
    for (var i = 0; i < list.length; i++) { 
     params.Data2 += list[i]; 
    } 

    $.ajax(
    { 
     url: JenkinsURL, 
     method: 'POST', 
     data: params, 
     dataType: 'json', 
     success: RebootCallback, 
     fail: RebootCallback, 
    } 
    ); 
} 

function RebootCallback(result) 
{ 
    alert(result); 
} 

答えて

3

このようなAPIを使用してビルドをトリガーすると、ビルドがエンキューされ、実行を待機します。したがって、API呼び出しは、ビルドの開始または完了を待たずにすぐに戻ります(どちらも起きない可能性があります)。

しかし、リクエストに対する応答には、新しく作成されたキュー項目を指すLocation HTTPヘッダーが含まれます。たとえば:このリソースのAPIのURLを確認する

HTTP/1.1 201 Created 
Location: http://localhost:8080/queue/item/16/ 

(すなわちURLにapi/jsonまたはapi/xmlのいずれかを追加)キューに入れられた項目についての情報を返します。

ビルドがまだキューに残っている場合、whyの理由が表示されます(使用可能なエージェントを待っているなど)が、ビルドが開始されている場合は、executable.urlフィールドがビルドをポイントします。例えば、API JSONを開始し、ビルドのために:あなたはそのビルド#4のためのAPIのURLを取得した場合

{ 
    … 
    "url": "queue/item/16/", 
    "executable": { 
    "_class": "org.jenkinsci.plugins.workflow.job.WorkflowRun", 
    "number": 16, 
    "url": "http://localhost:8080/job/test/4/" 
    } 
    … 
} 

、ビルドの結果を得るために、そのresultフィールドを確認することができるだろう。

+0

ああ、それはすぐには実行されません。あなたは私の要求に対する応答に場所が含まれていると言いますが、それは私の問題です。私は全く応答を受けていません。投稿されたコードに問題があり、それが返答を受け取らないことになりますか? –

+0

Javascriptの詳細についてはわかりません。しかし、このサイトのいくつかのクイック検索では、JavascriptがJenkinsサーバーと同じ起点で実行されていない場合、jQueryの自動追従リダイレクト(201応答では発生しないはずです)とCORSヘッダーが必要です。 –

関連する問題