web-dev-qa-db-ja.com

バッチスクリプトを使用してJenkinsビルドを開始する

私はJenkinsビルドサーバーと協力して、FPGAの合成/シミュレーションを実行しています。現在、ナイトリービルドがあり、Jenkinsブラウザーインターフェイスでビルドを手動で開始できます。

私の質問は:

ブラウザインターフェイスを使用せずにバッチスクリプトでジョブビルドを開始する可能性はありますか?

(Windows 7 64ビットでJenkinsを実行しています。)

9
michi.b

Curlコマンドを使用した例を次に示します(パラメーターを持つジョブの場合):

curl -X POST -u YOUR_USER:YOUR_USER_PASSWORD http://YOUR_JENKINS_URL/job/YOUR_JOB/buildWithParameters?PARAM1=value1&PARAM2=value

そして、パラメーターなしのジョブ:

curl -X POST -u YOUR_USER:YOUR_USER_PASSWORD http://YOUR_JENKINS_URL/job/YOUR_JOB/build

ユーザー/パスワードを使用したくない場合は、JenkinsユーザーのAPIトークンを生成できます。

enter image description here

Curlコマンドでこのトークンを使用します。

curl -X POST http://YOUR_JENKINS_URL/job/YOUR_JOB/build?TOKEN=YOUR_API_TOKEN
24
Bruno Lavit

ユーザー名/パスワードの代わりに構成されたトークンを使用してJenkinsジョブをトリガーできます。これにより、独自の資格情報を公開せずにトリガースクリプトを共有できます。

  1. ジョブの構成に移動します。
  2. Build Triggersまでスクロールし、Trigger build(スクリプトからなど)のチェックボックスをオンにします、認証トークン(例:「MY_TOKEN」)を入力します。

enter image description here

  1. ビルドにパラメーターがあるかどうかに基づいて、Authentication Tokenフィールドの下にあるURLの1つをコピーします。

次に、そのURLを curl コマンドで使用して、ビルドをトリガーします。例えば:

curl -I https://${JENKINS_URL}/job/tmp/job/dummy-test/build?token=MY_TOKEN

-Iパラメーターは、curlに応答のヘッドを印刷するように指示します。これを使用して、結果の状況を判別できます。成功した場合、JenkinsはHTTP 201で応答します。

$ curl -I https://<JENKINS_URL>/job/tmp/job/dummy-test/build\?token\=MY_TOKEN
HTTP/1.1 201 Created
Cache-Control: public
Content-Length: 0
Date: Mon, 11 Apr 2016 12:47:26 GMT
Location: https://<JENKINS_URL>/queue/item/1707/
Pragma: public
Server: Apache-Coyote/1.1
X-Content-Type-Options: nosniff
Connection: keep-alive
11
user600838

Curlを使用してジョブをトリガーしようとすると、常に「認証されていない」エラーが発生しました。

後で、サーバーで匿名アクセスを完全に無効にしたことが原因であることがわかりました。解決策は、次のプラグインをインストールすることでした: https://wiki.jenkins-ci.org/display/JENKINS/Build+Token+Root+Plugin

ソース: https://issues.jenkins-ci.org/browse/JENKINS-17764

2
keocra

新しいJenkins PipelineのBuild Triggersで、チェックボックスTrigger builds remote(e.g.、from scripts)を選択します。次に、ビルドをトリガーするときに必要になるトークンをJenkinsに渡します。

Not authorizedエラー

リモートでビルドをトリガーする際の問題は、Jenkinsの権限を設定し、匿名ユーザーアクセスを無効にすると、Not authorizedスクリプトからビルドをトリガーしようとするとエラーが発生します(@keocraが指摘したとおり)。次の2つのオプションがあります。

  1. ビルドをトリガーするときに、ユーザー名とパスワードを渡します。これは、スクリプトにユーザー名とパスワードを含める必要があることを意味します。つまり、スクリプトを読むことができるすべてのユーザーがユーザー名とパスワードを持っていることを意味します。
  2. トークンルートプラグインのビルド を使用します。このプラグインを使用すると、ユーザー名とパスワードを要求せずにTrigger builds remote機能を使用できます。必要なのは、前に生成したトークンだけです。

ビルドのトリガー

ビルドをリモートでトリガーするには、実行します

curl JENKINS_URL/buildByToken/build?job=JobFoo&token=MyToken

どこ JENKINS_URLはJenkinsインスタンスのURL、JobFooはジョブの名前、MyTokenTrigger bulids remote

もちろん、curl;を使用する必要はありません。 wgetまたはHTTP要求を作成できる他のプログラムを使用することもできます。

0
jpyams