スタータープロジェクト
ウェブフックレシーバを作成する
このチュートリアルの目標は、スタータープロジェクトテンプレートをベースとして使用して、カスタムウェブフックレシーバを構築することです。ウェブフックレシーバは、ウェブフックを受信して処理する小さなhttpサーバです。
このチュートリアルは、Goプログラミング言語の実用的な知識があることを前提としています。テンプレートから新しいコードプロジェクトを生成するために使用されるスキャフォールディング システムである、boilrもインストールする必要があります。
ステップ 1:プロジェクトを作成する
Droneは、プロジェクトテンプレートから新しいウェブフックレシーバを作成するためのスキャフォールディングを提供します。このテンプレートを使用してプロジェクトをブートストラップします。
- ウェブフックテンプレートをインストールします。
$ boilr template download drone/boilr-webhook drone-webhook
- 新しいウェブフックプロジェクトを作成します。
$ boilr template use drone-webhook my-webhook-receiver
ステップ 2:コードをカスタマイズする
生成されたプロジェクトは、リクエストを受信、認証、解析できるシンプルなサーバを作成します。 plugin.Deliver
関数を変更するだけで、カスタム処理ロジックを含めることができます。
1 package plugin
2
3 import (
4 "context"
5
6 "github.com/drone/drone-go/plugin/webhook"
7 )
8
9 // New returns a new webhook extension.
10 func New() webhook.Plugin {
11 return &plugin{}
12 }
13
14 type plugin struct {
15 }
16
17 func (p *plugin) Deliver(ctx context.Context, req *webhook.Request) error {
18 // insert your custom logic here
return nil
19 }
ステップ 3:Dockerイメージを構築する
生成されたプロジェクトには、イメージのビルドと公開に使用できるがDockefile
含まれています。Dockerfile エントリポイントを更新する必要があります。
- バイナリファイルをビルドします。
$ GOOS=linux CGO_ENABLED=0 go build
- Dockerイメージをビルドして公開します。
$ docker build -t my-webhook-receiver .
$ docker push my-webhook-receiver
ステップ 4:ウェブフックレシーバを開始する
- httpリクエストの署名に使用する共有シークレットを作成します。
$ openssl rand -hex 16
bea26a2221fd8090ea38720fc445eca6 - ウェブフックレシーバを起動します。
$ docker run \
-p 3000:3000 \
-e DRONE_SECRET=bea26a2221fd8090ea38720fc445eca6 \
my-webhook-receiver
ステップ 5:ウェブフックを有効にする
ウェブフックレシーバが実行されたら、Droneサーバにウェブフックエンドポイントとシークレットを提供する必要があります。
DRONE_WEBHOOK_ENDPOINT=http://...
DRONE_WEBHOOK_SECRET=bea26a2221fd8090ea38720fc445eca6