curl コマンドを使用して Jenkins ジョブをリモートでトリガーする方法

curl コマンドを使用して Jenkins ジョブをリモートでトリガーする方法

以下の方法を使用して、curl コマンド経由で Jenkins ジョブ (パラメーター化されたジョブではない) を実行 (トリガー) しようとしましたが、これらの結果が表示されます。私の Jenkins バージョンは Jenkins 2.73.3 です。

curl -X POST -u jenkins_user_name:jenkins_user_passwd http://jenkins_server/job/job_name/build

しかし、403は禁止されている ここに画像の説明を入力してください

そのため、ジョブ用の認証トークンを作成しました ここに画像の説明を入力してください

curl -X POST http://jenkins_server/job/job_name/build?token=wefiytgwiefiweihfqweiodf

同じエラーが出ます。Forbidden 403と表示されます

その後、jenkinsユーザーのAPIトークンを作成して試してみました。 ここに画像の説明を入力してください

curl -X POST -u auto:testingdae6dc22a73048e6d596e7b0 http://jenkins_server/job/job_name/build?token=wefiytgwiefiweihfqweiodf

しかし、これも同じで、禁止403と表示されます

実際、私もこの答えに従いました。https://www.nczonline.net/blog/2015/10/triggering-jenkins-builds-by-url/ これも私にはうまくいきませんでした。

毎回、403 禁止です。jenkins ユーザーを適切に認証できなかったと思います。

答え1

答えが見つかりました。実際、それらの手順は正しいです。正しい手順について言及したいと思います。

Jenkins でユーザーを作成すると、そのユーザーのパスワードまたは API トークンを使用して Jenkins ジョブをトリガーできます。ただし、そのユーザーの API トークンを作成する方がはるかに優れています。ただし、どちらの方法でも問題なく動作します。

しかし、Jenkinsジョブの認証トークンを作成する必要があります

ここに画像の説明を入力してください

パスワードの使用

curl -I -u auto:<userpasswd> http://<jenkins_server>/job/test/build?token=wefiytgwiefiweihfqweiodf

APIトークンの使用

JenkinsユーザーのAPIトークンを作成する ここに画像の説明を入力してください

curl -I -u auto:<user_api_token> http://<jenkins_Server>/job/test/build?token=wefiytgwiefiweihfqweiodf

これらは結果です。jenkins ユーザー パスワードそしてJenkins ユーザー API トークン

ここに画像の説明を入力してください

実際には、「-I」なしでもこのリクエストを送信できます。

curl -u auto:<jenkins_user_token> http://<jenkins_server>/job/test/build?token=wefiytgwiefiweihfqweiodf

curl -u auto:<jenkins_user_password> http://<jenkins_server>/job/test/build?token=wefiytgwiefiweihfqweiodf

答え2

2023年に向けて早送り

スクリプト/bash からリモートでジョブを実行するには、2 つのトークンを渡す必要があります。
必要なもの:

  1. apiTokenでIDを認証します。この値はJENKINS_URL/me/configureから作成されます。ここドキュメント用
  2. 「リモートでビルドをトリガーする」を有効にするときに作成する別のジョブ認証トークン。

以下は 2 つのパラメータを使用してジョブを実行するサンプルです。調整することでジョブを完了できます。

PARAM1_VALUE=<param1_value>
PARAM2_VALUE=<param2_vale>
USERNAME=dummy_user_name
JENKINS_URL="http://10.xxx.x.xxx:8080"
JOB_TOKEN="<value>" # you create this token when you enable Job>Configure>Build Triggers>Trigger builds remotely
LOGIN_API_TOKEN="<value>" #get this value from JENKINS_URL/me/configure 

curl -L --user $USERNAME:$LOGIN_API_TOKEN "$JENKINS_URL/job/JobName/buildWithParameters?token=$JOB_TOKEN&param1_name=$PARAM1_VALUE&param2_name=$PARAM2_VALUE"

答え3

これらの権限を構成するには:

  • クリックManage Jenkins
  • クリックConfigure Global Security
  • 取り除くPrevent Cross Site Request Forgery exploits
  • クリックsave

関連情報