仕様や画面は現行バージョンと異なる可能性があります。
Backlogの最新版についてはこちらからご確認ください。
みなさん、こんにちは。中村です。
GWも終わり、サブタスク機能を始めとした次回のリリースに向けて、テストユーザの方のご協力のもと、日々開発を進めております。きっと満足ができるものを提供できるかと思いますので、乞うご期待ください。
さて、今日は4月初めのリリースで提供した、Git Webフックについて紹介します。
Webフックの概要
Webフックとは、Gitのpushをトリガーとして予め設定しておいたURLにpush時の情報をポストする機能です。GithubやBitbucketにはすでに導入されているので、概要についてはご存知の方も多いでしょう。Webフックを使うと、ソースコード管理と紐付けて他システムとの連携を行うことができます。
詳細については、こちらのヘルプも参照してください。
活用例:JenkinsへのPush通知
- http://<Jenkinsサーバ>/git/notifyCommit?url=<GitリポジトリのURL>
続いて、Jenkins側の設定です。なお、Gitリポジトリの設定はWebフックを使わない場合と同じなので、ここでは割愛させていただきます。 ビルド・トリガの設定で、”SCMをポーリング” にチェックを入れておきます。スケジュールの項目は必要ないので、何も記載しなくても構いません(画面キャプチャ上では、他の人がこの設定を見たときのためにコメントを残していますが)。 なお、Git Pluginの仕様上、スケジュールには何も必要ありませんが、ポーリングのチェックは設定しておく必要があります。
Webフックを実装しようと思い立ったきっかけ
ERROR: Problem fetching from origin / origin - could be unavailable. Continuing anyway hudson.plugins.git.GitException: Command "git fetch -t xxxxx@xxxxx.git.backlog.jp:/XXXXX/xxx.git +refs/heads/*:refs/remotes/origin/*" returned status code 128: stdout: stderr: ssh: connect to host nulab.git.backlog.jp port 22: Connection refused fatal: The remote end hung up unexpectedly
そこで詳細を調査したところ、なんと!サーバ側の同時アクセス数制限に引っかかっていた事が判明したのです。Backlog の Git リポジトリにアクセスする Jenkins のジョブが増えるにつれて、ポーリングによる同時アクセスが規定の回数を超えていたのでした。
さて、原因は特定できました。手軽な回避策としては、ポーリングの間隔やタイミングを調整することでしょう。しかし、それでは、問題を先送りしているだけですし、他のユーザが同様の問題に直面する可能性も残ってしまいます。
上記の事情を踏まえて、Git Webフック機能を実装することを決断しました。
Webフックにより、同時アクセス数の制限に引っかからなくなりました。また、ポーリングの時とは違い、git pushしてすぐにJenkinsのビルドが走るので、よりフィードバックを得やすくなりました。
以上、Git Webフックについての活用例と、開発裏話をお送りしました。
Webフックは、上記で例示したJenkinsとの連携に限らず、様々な活用の仕方があるかと思います。「うちではこんな風に活用してるよ」というのがあれば、ぜひお聞かせください!
こちらもオススメ:
プロジェクト管理とは?目的や項目、管理手法について徹底解説! | Backlogブログ
プロジェクト管理の基本や主な項目を紹介。CCPMやWBSなどのプロジェクト管理の代表的な手法やプロジェクト管理全体の流れを解説。これからプロ…
backlog.com