web-dev-qa-db-ja.com

変更がGitHubオプションにプッシュされたときのJenkins-Buildが機能しない

Jenkinsはlocalhostで実行されています。 GitHubにリポジトリがあります。 「変更がGitHubにプッシュされたときにビルドする」オプションがオンになっています。

[今すぐビルド]をクリックすると、ビルドは正常に完了し、問題はありません。しかし、リポジトリにコードをコミットしているとき、自動ビルドは行われていません。リポジトリが公開されているため、システムからGitHubにアクセスできます。Jenkinsでさえも検出できるはずです。ポーリングオプションがあることは知っていますが、リポジトリで変更が検出されたときにJenkinsがビルドするようにします(これは私たちが達成しようとしていることです)。

構成:

ジェンキンス1.615

Gitプラグイン2.3.5

Git Client Plugin 1.17.1

————————————————————————————————————————————

[〜#〜] edit [〜#〜]:「変更がGitHubにプッシュされたときにビルドする」オプションがGitHubプラグインの最新バージョンでは、「GITScmポーリングのGitHubフックトリガー」に名前が変更されました。 (@smrubinのフィードバックのおかげ。)

35
Anuj Balan

webhook urlを見逃したと思います。

Build when a change is pushed to GitHubオプションのチェックに加えて、webhook urlをGithubリポジトリに追加して、Auto triggerメカニズムを動作させる必要があります。どうやって:

Githubリポジトリに移動します。

設定-> Webhooks&Services->サービス->サービスの追加->「Jenkins(GitHub plugin)」を選択

次に、Jenkins hook urlにjenkinsのURLを次のように入力します。 http:// your_jenkins_url/github-webhook /enter image description here


そして、非常に重要です、あなたのローカルホストにjenkinsサーバーをインストールしているので、あなたはすべきではないことに注意してくださいtGithubはlocalhostまたはhttp://localhost:8080/github-webhook/または127.0.0.1を認識できないため、上記のJenkinsフックURLを192.168.*.*のように埋めます。

Githubで認識できる外部からアクセス可能なDNS名またはIPアドレスを使用する必要があります。

70
mainframer

私も同じ問題を抱えて解決しました。問題は、URLが/で終わる必要があることでした。意味:

http://<jenkinsurl>:8080/github-webhook/

http://<jenkinsurl>:8080/github-webhook

(最後に不足している/に注意してください。)

34
AskYous

実際、Jenkins -> Github plugin configuration(上記)からwebhookの設定を行うと、githubでwebhookが作成されたままになります。したがって、上記の2つのアプローチは基本的に同じことを行います。

個人的には、Githubからwebhookを作成するのが好きです。なぜなら、この方法では、Jenkinsでgithubユーザー情報を共有または保存する必要がないからです。

手順:

  1. Githubにログイン(管理者で)

  2. Jenkinsでフックするリポジトリに移動します

  3. 設定タブをクリックします-> webhooks&services
  4. [Webhookの追加]をクリックします。
  5. ペイロードURLを入力してください:のような:http://:8080/github-webhook /
  6. コンテンツタイプとしてjsonを選択します。
  7. 完了です。

これで、変更とコミットが行われ、jenkins build get triggerが自動的に表示されます。 githubでコードをプッシュするときに、jenkinsジョブで設定を行ってビルドを開始することを忘れないでください。

3
suprakash

GitHubプラグイン( https://wiki.jenkins-ci.org/display/JENKINS/GitHub+Plugin )には、手動モードと自動モードの2つの方法があります。 mainframerは、手動モードへの回答を提供します。今日、私は何か新しいものを見つけました。 mainframerのサービスへの追加では、複数のJenkinsのインスタンスを追加できません。そのため、以下に示すように、他のインスタンスにWebhookを追加します。また、正常に動作します。

私はここに写真を入れたかったのですが、私のIDにはそうする権利がありません。

1
Jirong Hu