JFrog ArtifactoryでWebhookを使用した自動化

Artifactory and Webhooks

リポジトリマネージャーとしてのArtifactoryが、開発と運用の間のギャップを埋めることで、CI/CD パイプラインにおいて重要な役割を果たしていることは(おそらく)すでにご存知でしょう。プロセスをさらに自動化するために、Artifactoryと一緒にwebhookを使用するオプションが加わりました。続きを読んでみましょう…

まずはじめに、webhookとは何でしょう?

最も簡単に言えば、webhookは優先順位に基づいて定義されたイベントによってトリガーされる自動化された通知メカニズムです。webhookがトリガーされると、イベントに関する関連情報を特定のイベント通知をリッスンしているウェブロケーションに送信します(後ほど例を挙げます)。このように、webhookは以下の3つのシンプルなコンポーネントで構成されています。トリガーイベント、イベントに関する情報(ペイロード)、およびイベントをリッスンするウェブロケーションです。

簡単な例としてあなたがチームAの一員で、Artifactoryで新しいDockerタグを完成させたとしましょう(これが「イベント」です)。もちろん、チームBは新しいビルドのためにそのタグに関する情報(ペイロード)を必要としています。webhookとArtifactoryを使えば、そのコンポーネントが利用可能になるとすぐに、チームBのビルドサーバ(イベントをリッスンしている場所)への自動通知を設定することができ、この新しい情報を含むチームBのビルドを自動的にトリガーすることができます。これで、この特定のタスクのためにチーム間で手動で人間同士のやりとりをする必要がなくなりました。

ソースコードのコミットを待つことはできないのでしょうか?

確かにそれは可能ですし、同じ目標を達成するための一つの方法です。また、ミスステップを避けるために、両方のチームで同じビルドサーバを使用することもできます。しかし、異なるチームが異なるビルドサーバ、異なるソース管理サーバを使用していたり、地理的に離れていることが多いため、現実にはそうはいきません。そこで、依存関係のソースとして、また、チーム間で完成したコンポーネントの送信先として、Artifactory(と webhook!)の出番です。

Artifactory webhookプラグインでの作業

Artifactoryのwebhookで遊び始める準備はできているでしょう。簡単なプラグインで開始できます。

webhookプラグインは、他の素晴らしいコミュニティ主導のJFrogが管理するユーザープラグインと一緒に、公開されているGithubで見つけることができます。webhookプラグインは複数のイベント(新しいDockerタグが作成されるなど)のリッスン、特定のリポジトリのフィルタリング、パッケージフォーマットの指定など、すぐに多くの設定オプションを利用可能です。これらはすべて、シンプルで読みやすい設定ファイルで行うことができます。Groovyのコードを少し汚してみたいという方は、独自のフォーマッターを作成したり、webhookをトリガーとするイベントを追加したりして、さらにカスタマイズすることができます。

プラグインのインストールも簡単で、Artifactoryのプラグインディレクトリにプラグインを保存し、webhookをトリガーするイベントを指定する設定を追加するだけで、すべての設定が完了します。

プロのヒント: Artifactoryを再起動する必要はありません。reload plugins APIコールを使用してください。

ボーナス: Webhookは人間のためでもあります

Webhook はCI/CD の一部を自動化するのに役立つだけではありません。私たち人間にとっても非常に有用です。例えば、新しいビルドが公開されたことを開発者の Slack チャンネルに通知するWebhookを設定することができます。保護されたリポジトリのファイルが削除、変更された場合に警告を出すことができます。他にも無数の便利なタスクに採用することができます。ウェブフックは物事をより簡単にしてくれます。