web-dev-qa-db-ja.com

Jenkinsリモートトリガーが機能しない

次のコマンドを使用してビルドをトリガーしようとすると、次のエラーが表示されます。

curl http:// jenkins_server:port/jenkins/job/job_name/build?token = token_name

出力:

認証が必要です

<-次のように認証されます:anonymous
あなたがいるグループ:

必要な許可(ただし、許可されていない):hudson.model.Hudson.Read
...によって暗示されています:hudson.security.Permission.GenericRead
...によって暗示されています:hudson.model.Hudson.Administer
->

私には管理者権限があり、「認証トークン」も有効にしています。また、ジョブのビルド、検出、読み取りの権限も持っています。 Jenkins 1.614を使用しています。

オンラインでいくつかの投稿をチェックしましたが、自分に合ったものを見つけることができませんでした。

次のようないくつかのオプションを試しました
1)curl -X POST http:// jenkins_server:port/jenkins/job/job_name/build?token = token_name
2)curl -u user:API(長いHTMLページを印刷します)

助言がありますか。

22
Technext

この問題を解決するために、ビルドトークンルートプラグインをインストールします

https://wiki.jenkins-ci.org/display/JENKINS/Build+Token+Root+Plugin

次に、同じように、認証トークンをセットアップします

最後に、curlを使用してリモートビルドをトリガーします(エスケープ文字「\」に注意してください)

curl http://JENKINS_URL/buildByToken/build?job=JOB_NAME\&token=TOKEN_NAME

または、ブラウザにURLを貼り付けます(エスケープ文字「\」は不要です)

http://JENKINS_URL/buildByToken/build?job=JOB_NAME&token=TOKEN_NAME

「成功」と表示された場合、リモートジェンキンスが正常にトリガーされていることを意味します。

ジョブのビルド、検出、読み取りの権限を設定する必要がないことに注意してください

詳細については、 https://cloudbees.zendesk.com/hc/en-us/articles/204338790-Why-are-builds-not-being-triggered-with-Build-Token-を参照できますルートプラグイン-

21
hsiaoairplane

動作させるためにプラグインをセットアップする必要はないと思います。単純に次のBATCH CMDを実行してください。

curl -X POST http://USER_ID_JENKINS_RECEIVER:TOKEN_OF_USER_ID_JENKINS_RECEIVER@URL_JENKINS_RECEIVER:PORT/job/NAME_OF_JOB/buildWithParameters?token=TOKEN_JOB_JENKINS_RECEIVER
  • SER_ID_TOKENを表示するには、jenkinsの右上にあるユーザー名に移動し、[構成]に移動して、[APIトークン]をクリックすると表示されます。

  • JOB_OF_JENKINS_RECEIVERでトークンを設定する必要があります

Jenkinsで匿名ユーザーへのアクセス許可がなくても完全に機能することを言わなければなりません。

12
M. Mariscal

テストJenkinsサーバーをセットアップした後、同じ問題が発生しました。解決策は、Jenkinsの管理者パスワードを使用して認証することでした:

curl -u admin:<mypassword> http://localhost:8080/job/Test/build?token=<mytoken>

Jenkinsへのログインに使用するものと同じユーザー名とパスワードを使用します。追加のプラグインをインストールする必要はありませんでした。

6
sashoalm

Jenkins Python API 。を試してみることをお勧めします。ジョブをトリガーするのが非常に簡単なbuild_jobアクションを提供します。

build_job(name, parameters=None, token=None)
   Trigger build job.

   Parameters:  
   name – name of job
   parameters – parameters for job, or None, dict
   token – Jenkins API token
3
mainframer

私の場合、URLとトークンは正しいものでしたが、URL /ビルドをトリガーするAPIユーザーに必要な権限の1つを忘れていました。

許可には、最低限リストを含める必要があります。

  • 全体-読み取り
  • ジョブ-ビルド
  • ジョブ-読み取り
  • ジョブ-ワークスペース
2
Micah

私も同じ問題に直面し、解決しました。

2つのJenkins AとBがあるとします。JenkinsBにあるビルドジョブを実行する場合、Jenkins BのAPIトークンを与える必要があります。JenkinsAのAPIトークンを提供する場合、認証が表示されます発行のみ。

これは私が犯した間違いであり、必要なJenkinsに従ってAPIトークンを適切に変更すると解決しました。

0
Dinesh

Parameterized Buildプラグインをインストールする

https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Build

承認トークンを使用してビルドをトリガーする場合([ジョブ]-> [構成]-> [トリガーのビルド]-> [リモートからのトリガービルド(スクリプトなど))]にアクセスできます。

curl -X POST http://server/job/myjob/buildWithParameters?token=TOKEN&PARAMETER=Value

0
Tuan