検証拡張機能

Updated 2 years ago by Admin

検証拡張機能を使用して、カスタムチェック、検証、およびリンティングルールを.drone.yml構成ファイルに適用できます。


構成

Droneサーバに次の構成パラメータを提供することで、検証拡張機能を登録できます。

  • DRONE_VALIDATE_PLUGIN_ENDPOINT
    拡張機能にhttpリクエストを行うために使用されるエンドポイントを提供します。
  • DRONE_VALIDATE_PLUGIN_SECRET
    拡張機能へのhttpリクエストを認証するために使用されるトークンを提供します。このトークンは、サーバと拡張機能の間で共有されます。


使い方

サーバは、yamlファイルが処理される前、およびパイプラインがスケジュールされる前に、検証拡張機能にHTTPポストを作成します。検証拡張機能は、yamlファイルを受け入れるか拒否することが想定されています。


リクエスト

検証拡張機能は、yamlを検証するためのHTTPリクエストを受け取ります。リクエストの本文には、JSON形式のリポジトリとビルドの詳細、および生のYaml設定ファイルが含まれます。

リクエストボディの定義:

1 class Request {
2 config: Config;
3 repo: Repo;
4 build: Build
5 }

1 class Config {
2 data: string;
3 }

1 class Repository {
2 id: int64;
3 uid: int64;
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レスポンスコード:yamlが検証に合格したことを示す
  • 400レスポンスコード(yamlが検証に失敗したことを示す)と、検証の失敗理由を示すJSONエンコードされたエラーメッセージ
  • 498レスポンスコード:yamlが検証に失敗したため、スキップする必要があることを示す
  • 499レスポンスコード:yaml が検証に失敗したため、手動での承認を保留してブロックする必要があることを示す
{
"message": "cannot use image from external registry"
}


承認

httpリクエストは、共有シークレットを使用するhttp signaturesドラフト仕様に従って署名されます。受信者は、署名を使用してウェブフックの信頼性と整合性を検証する必要があります。


スタータープロジェクト

検証拡張機能の作成に興味がある場合は、スタータープロジェクトをベースとして開発を開始することをお勧めします。


How did we do?