Jenkins:「HTTP ERROR 400 Nothing is submitted」/「This page expects a form submission」
そのジョブにはパラメーターがあるので、/build の住所はジョブの Web ページが送るフォームを待っており、ただの POST は受け付けません。Jenkins は HTTP 400 で断ります。/buildWithParameters へ送り、パラメーターはクエリかフォームの項目で付けます。省いたパラメーターは既定値になります。
答えの全体
2026年10月24日に、API トークンでサインインして、文字列のパラメーターが1つあるジョブへ送ったときの Jenkins 2.580.1 の答え:
curl -X POST -u '<ユーザー>:<API トークン>' 'https://jenkins.example.com/job/<ジョブ>/build' HTTP 400 HTTP ERROR 400 Nothing is submitted URI:/job/<ジョブ>/build STATUS:400 MESSAGE:Nothing is submitted SERVLET:Stapler
- 同じ POST に何か項目が付いていると(
?delay=0sec、パラメーターそのもの=/build?GREETING=hiやフォームのGREETING=hi)、答えは HTTP 400 「This page expects a form submission」に変わりました。どちらになるかは項目が1つでもあるかだけで決まります。項目が何もないと、Jenkins の Web の仕組み(Stapler)は「Nothing is submitted」を返します。 - 権限やクラム(crumb)の問題ではありません。同じトークンで、同じジョブが
/buildWithParametersから、パラメーターの無いジョブが/buildから起動しました。
buildWithParameters で起動する
curl -X POST -u '<ユーザー>:<API トークン>' \ 'https://jenkins.example.com/job/<ジョブ>/buildWithParameters?GREETING=hi' HTTP 201 Location: https://jenkins.example.com/queue/item/<n>/
- パラメーターはクエリの項目でもフォームの項目(
--data-urlencode 'GREETING=hi')でも効きました。省いたパラメーターは既定値になり、何も付けなければ既定値で動きました。 Locationの見出しは、ビルドの待ち行列での場所です。動き始めると、/queue/item/<n>/api/jsonのexecutableにビルドの番号と住所が出ます。- POST で送ります。
/buildWithParametersへの GET は HTTP 405「This URL requires POST」でした。 - API トークンなら、Jenkins はクラムを求めませんでした(求められる場合は「No valid crumb was included in the request」の解説)。
Jenkins CLI なら、-p でパラメーターを渡し、-s でビルドの終わりを待ち、-v でコンソールを表示します:
java -jar jenkins-cli.jar -s https://jenkins.example.com/ -http -auth @auth.txt \ build <ジョブ> -p GREETING=hi -s -v
auth.txt の中身は <ユーザー>:<API トークン> です。
逆向き:「… is not parameterized」
パラメーターの無いジョブに /buildWithParameters を送ると HTTP 400 「<ジョブ> is not parameterized」、CLI では「ERROR: <ジョブ> is not parameterized but the -p option was specified.」でした。そのジョブは /build で起動します。多くのジョブを起動するスクリプトなら、先に /job/<ジョブ>/api/json を読みます。パラメーターのあるジョブは、property の ParametersDefinitionProperty にそれが並びます。
IntelliJ IDEA からパラメーター付きでビルドするなら
Pipeline Inbox for Jenkins は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。パラメーターのあるジョブは buildWithParameters で、無いジョブは /build で起動します。ビルドの画面にはパラメーターごとの欄(文字・選択・チェック・パスワード)があり、既定値が入っていて、値をジョブごとに覚えておけます(パスワードは覚えません)。再ビルドは同じパラメーターでもう一度動かします。ビルド・再ビルド・中止・入力ステップは Pro(月 US$1.50・30日間の無料試用つき)、ビルドの一覧とコンソールのログは無料です。画面は日本語です。
Jenkins® は LF Charities Inc. の登録商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは Jenkins プロジェクト・JetBrains のいずれとも提携しておらず、承認も受けていません。
ほかに:「Waiting for next available executor」 · IntelliJ IDEA で使える Jenkins のプラグインの比較 · English