構成拡張機能
構成拡張機能を使用して、構成ファイル (.drone.yml など) をフェッチするプロセスをオーバーライドできます。これは、存在しないプロジェクトのデフォルトまたはグローバル設定を返すために使用できます。他のユースケースでは、コンバージョン拡張機能の使用を検討する必要があります。
構成
Droneサーバに次の構成パラメータを提供することにより、構成拡張を登録できます。
- DRONE_YAML_ENDPOINT
拡張機能にhttpリクエストを行うために使用されるエンドポイントを提供します。 - DRONE_YAML_SECRET
拡張機能へのhttp要求を認証するために使用されるトークンを提供します。このトークンは、サーバと拡張機能の間で共有されます。
使い方
サーバは構成拡張機能にHTTPポストを実行して、構成ファイルを取得します。構成拡張機能が204ステータス コードを返す場合、システムはリポジトリ内の構成ファイルにフォールバックします。
リクエスト
構成拡張機能は、構成ファイルを返すためのHTTPリクエストを受け取ります。リクエストの本文には、リポジトリとビルドの詳細がJSON形式で含まれています。
リクエストボディの定義:
1 class Request {
2 repo: Repo;
3 build: Build
4 }
リポジトリの定義:
1 class Repository {
2 id: int64;
3 uid: string;
4 user_id: int64;
5 namespace: string;
6 name: string;
7 slug: string;
8 scm: string;
9 git_http_url: string;
10 git_ssh_url: string;
11 link: string;
12 default_branch: string;
13 private: boolean;
14 visibility: string;
15 active: boolean;
16 config: string;
17 trusted: boolean;
18 protected: boolean;
19 ignore_forks: boolean;
20 ignore_pulls: boolean;
21 cancel_pulls: boolean;
22 timeout: int64;
23 counter: int64;
24 synced: int64;
25 created: int64;
26 updated: int64;
27 version: int64;
28 }
ビルド定義:
1 class Build {
2 id: int64;
3 repo_id: int64;
4 number: int64;
5 parent: int64;
6 status: string;
7 error: string
8 event: string;
9 action: string;
10 link: string;
11 timestamp: int64;
12 title: string;
13 message: string;
14 before: string;
15 after: string;
16 ref: string;
17 source_repo: string;
18 source: string;
19 target: string;
20 author_login: string;
21 author_name: string;
22 author_email: string;
23 author_avatar: string;
24 sender: string;
25 params: [string][string];
26 cron: string;
27 deploy_to: string;
28 deploy_id: int64;
29 started: int64;
30 finished: int64;
31 created: int64;
32 updated: int64;
33 version: int64;
34 }
レスポンス
構成拡張機能は、200のレスポンスコードと生の構成ファイルで要求に応答する必要があります。構成拡張機能が204ステータスコードを返す場合、システムはリポジトリ内の構成ファイルにフォールバックします。
レスポンスの定義:
1 class Config {
2 data: string;
3 }
承認
httpリクエストは、共有シークレットを使用するhttp signaturesドラフト仕様に従って署名されます。受信者は、署名を使用してウェブフックの信頼性と整合性を検証する必要があります。
スタータープロジェクト
構成拡張機能の作成に興味がある場合は、スタータープロジェクトをベースとして開発を開始することをお勧めします。