GET で JENKINS_URL/job/JOBNAME/build を呼び出した時の HTTP status code について

151 views
Skip to first unread message

Yuu Mizusawa

unread,
Feb 25, 2013, 4:19:42 AM2/25/13
to jenkin...@googlegroups.com
こんにちは。水沢です。


Jenkins のドキュメント Remote access API
に記載されているビルド方法で、


とアクセスすることでジョブが実行できると記載されていますが、 ver. 1.502 にて GET でアクセスしたところ、

  You must use POST method to trigger builds. (From scripts you may instead pass a per-project authentication token, or authenticate with your API token.) If you see this page, it may be because a plugin offered a GET link; file a bug report for that plugin.

と表示され、 "Proceed" ボタンが表示されました。


この際、 HTTP status code 200 で返ってきているのですが、ここは 405 等を返すのが妥当ではないでしょうか?

当方の環境では、スクリプト内で wget を使って build を呼び出すという使い方をしていたのですが、
200 が返ってきていたために、「スクリプトは正常終了するものの、ビルドは実行されない」という状態になっていました。


Changelog や BugTracker を見てみたのですが、本件について関係しそうな事が書かれていなかったので
(私の乏しい英語力で見落としてるだけな気もしますが)
ひとまずこちらの ML にて質問させていただこうと思った次第です。


よろしくお願いします。

--
水沢祐(YuuMizusawa) / T.Azami

mail: mizu...@freelance.ne.jp
blog: http://mizusawa-blog.freelance.ne.jp

sogabe

unread,
Feb 26, 2013, 2:52:36 AM2/26/13
to jenkin...@googlegroups.com
曽我部です。

詳しくはみていないのですが,


の2番目が該当するのかと。 確かにおっしゃるとおり405を返すのが妥当だと思います。

2013年2月25日月曜日 18時19分42秒 UTC+9 Yuu Mizusawa:

Seiji Sogabe

unread,
Feb 26, 2013, 7:27:42 AM2/26/13
to jenkin...@googlegroups.com
曽我部です。

1点確認ですが、

2013年2月25日 18:19 Yuu Mizusawa <mizu...@freelance.ne.jp>:
> こんにちは。水沢です。
>
>
> Jenkins のドキュメント Remote access API
> https://wiki.jenkins-ci.org/display/JA/Remote+access+API
> に記載されているビルド方法で、
>
> > http://JENKINS_URL/job/JOBNAME/build?token=TOKEN
>
> とアクセスすることでジョブが実行できると記載されていますが、 ver. 1.502 にて GET でアクセスしたところ、

ここの"TOKEN"は文字通り”TOKEN”を指定したのでしょうか。
本来は、設定画面のビルド・トリガの「リモートからビルド (例: スクリプトから)」を選択して、
「認証トークン」に設定した値を指定するのですが。

もし、設定した値とtoken=XXXが一致すれば、GETでも問題ないはずです。

tokenを使用しない場合は、POSTでないとこのエラーになります。


> You must use POST method to trigger builds. (From scripts you may instead
> pass a per-project authentication token, or authenticate with your API
> token.) If you see this page, it may be because a plugin offered a GET link;
> file a bug report for that plugin.
>
> と表示され、 "Proceed" ボタンが表示されました。
>
>
> この際、 HTTP status code 200 で返ってきているのですが、ここは 405 等を返すのが妥当ではないでしょうか?
>
> 当方の環境では、スクリプト内で wget を使って build を呼び出すという使い方をしていたのですが、
> 200 が返ってきていたために、「スクリプトは正常終了するものの、ビルドは実行されない」という状態になっていました。
>
>
> Changelog や BugTracker を見てみたのですが、本件について関係しそうな事が書かれていなかったので
> (私の乏しい英語力で見落としてるだけな気もしますが)
> ひとまずこちらの ML にて質問させていただこうと思った次第です。
>
>
> よろしくお願いします。
>
> --
> 水沢祐(YuuMizusawa) / T.Azami
>
> mail: mizu...@freelance.ne.jp
> blog: http://mizusawa-blog.freelance.ne.jp
>
> --
> このメールは Google グループのグループ「日本Jenkinsユーザー会」の登録者に送られています。
> このグループから退会し、メールの受信を停止するには、jenkinsci-ja...@googlegroups.com
> にメールを送信します。
> その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。
>
>



--
s.sogabe at gmail.com

Yuu Mizusawa

unread,
Feb 27, 2013, 2:30:35 AM2/27/13
to jenkin...@googlegroups.com
こんにちは、水沢です。


> 詳しくはみていないのですが,
>
>
> の2番目が該当するのかと。 確かにおっしゃるとおり405を返すのが妥当だと思います。

すいません、こちらについては完全に見落としていました。ありがとうございます。


> >
> > とアクセスすることでジョブが実行できると記載されていますが、 ver. 1.502 にて GET でアクセスしたところ、
>
> ここの"TOKEN"は文字通り”TOKEN”を指定したのでしょうか。
> 本来は、設定画面のビルド・トリガの「リモートからビルド (例: スクリプトから)」を選択して、
> 「認証トークン」に設定した値を指定するのですが。
>
> もし、設定した値とtoken=XXXが一致すれば、GETでも問題ないはずです。
>
> tokenを使用しない場合は、POSTでないとこのエラーになります。

上記について追調査を行いました。

まず、TOKEN の部分については
ドキュメントに記載されていた部分をそのままコピペしたものです。紛らわしくてすいません。

目的のジョブには認証トークンを設定しておらず、代わりに実行時間にディレイを設けているため

  /job/JOBNAME/build?delay=10sec

といった感じに指定しています。ただ、検証のため

  /job/JOBNAME/build

と query string なしで GET で呼び出した場合にも、英文のメッセージが表示され、
ジョブは実行されないが HTTP status code 200 で返ってくるのを確認しました。


ただし、この現象が発生するのは 
「グローバルセキュリティの設定」で「セキュリティ有効化」している場合のみで、
有効にしていない場合は GET method でも今まで通り実行出来ることを確認しました。

(すいません、この動作については表示されている英文にそれっぽく書かれてますね)


検証環境の グローバルセキュリティの設定 ですが、

  ユーザー情報 - Jenkinsのユーザーデータベース
  権限管理 - 全員に許可

です。
最初に報告させていただいた時の運用環境は、プラグインを用いて

  ユーザー情報 - HTTP Header by reverse proxy
  権限管理 - Role-Based Strategy

としています。



2013年2月26日 21:27 Seiji Sogabe <s.so...@gmail.com>:
Reply all
Reply to author
Forward
0 new messages