バージョン管理にgitを使用している現場で、Jenkinsからのポーリングのアクセスの扱いで悩んでいる現場の話をちらほら聞きます。
筆者の現場でも毎分ポーリングするようにしていたらポーリングのsshのアクセスがハングアップしてビルドが走らなくなってしまうなどのトラブルがありました。push時にhookスクリプトでJenkinsのビルドをキックしてやればいいんですが、そうするとJenkins側でブランチの区別がつかなくなってしまいます。
このような状態をJenkinsのGit Pluguinの機能で解決することができます。
まず、JenkinsはSCM(git)をポーリングするようにしますが、スケジュールの設定のところは空欄にします。
一方、git側はpushされたときに、
http://<jenkinsのurl>/git/notifyCommit?url=<gitレポジトリのURL>
にリクエストをとばすようにします。
画像はgitlabの場合です。このURLにリクエストをとばすと、Jenkins側でgitのレポジトリに折り返して、ビルド対象のブランチが更新されていた場合は、Jenkinsがビルドを開始します。