Docker Hub のウェブフック

読む時間の目安: 2 分

リポジトリへのプッシュイベントに呼応して、他のサービスへのアクションを行うウェブフックを利用することができます。 ウェブフックは Docker Hub 上において、設定した URL に対して送信される POST リクエストです。

Docker Hub のリポジトリ画面において「Webhooks」タブを通じてウェブフックを設定してください。

ウェブフックページ

ウェブフックの生成

ウェブフックを生成するには、リポジトリ画面の Webhooks タブにアクセスし、以下を実行します。

  1. ウェブフック名を入力します。
  2. 目的とするウェブフック URL を入力します。 これはウェブフックによる POST リクエストが送信される先を表わします。

ウェブフックの生成

ウェブフック送信履歴の参照

ウェブフックの送信履歴を確認するには、ウェブフックのサブメニューを表示して「View History」をクリックします。

ウェブフック送信履歴の参照

上により送信履歴を参照することができます。 また POST リクエスト送信の成功、失敗を確認することもできます。

ウェブフック履歴

ウェブフック本体部分の例

Docker Hub ウェブフックの本体部分は、以下のような JSON 形式により表現されます。

{
  "callback_url": "https://registry.hub.docker.com/u/svendowideit/testhook/hook/2141b5bi5i5b02bec211i4eeih0242eg11000a/",
  "push_data": {
    "pushed_at": 1417566161,
    "pusher": "trustedbuilder",
    "tag": "latest"
  },
  "repository": {
    "comment_count": 0,
    "date_created": 1417494799,
    "description": "",
    "dockerfile": "#\n# BUILD\u0009\u0009docker build -t svendowideit/apt-cacher .\n# RUN\u0009\u0009docker run -d -p 3142:3142 -name apt-cacher-run apt-cacher\n#\n# and then you can run containers with:\n# \u0009\u0009docker run -t -i -rm -e http_proxy http://192.168.1.2:3142/ debian bash\n#\nFROM\u0009\u0009ubuntu\n\n\nVOLUME\u0009\u0009[/var/cache/apt-cacher-ng]\nRUN\u0009\u0009apt-get update ; apt-get install -yq apt-cacher-ng\n\nEXPOSE \u0009\u00093142\nCMD\u0009\u0009chmod 777 /var/cache/apt-cacher-ng ; /etc/init.d/apt-cacher-ng start ; tail -f /var/log/apt-cacher-ng/*\n",
    "full_description": "Docker Hub based automated build from a GitHub repo",
    "is_official": false,
    "is_private": true,
    "is_trusted": true,
    "name": "testhook",
    "namespace": "svendowideit",
    "owner": "svendowideit",
    "repo_name": "svendowideit/testhook",
    "repo_url": "https://registry.hub.docker.com/u/svendowideit/testhook/",
    "star_count": 0,
    "status": "Active"
  }
}

ウェブフックコールバックの検証

ウェブフックチェーン内の 1 つのコールバックを検証するには、以下の手順が必要となります。

  1. リクエストの JSON 形式部分からcallback_urlの値を取得します。
  2. 上が示している URL に対して、正常な JSON 形式の本体を含む POST リクエストを送信します。

メモ: チェーンリクエストは、最終のコールバックが正常であることが検証されて、初めて完全なものとして受け付けられます。

コールバックの JSON データ

コールバックデータ内では、以下のパラメーターが識別されます。

  • state(必須): 受け入れ可能な値はsuccess, failure, errorのいずれか。 stateの値がsuccessではない場合、ウェブフックチェーンは中断されます。
  • description: Docker Hub 上において利用するさまざまな情報を含んだ文字列。 255 文字まで。
  • context: 処理対象のコンテキストに関する文字列。 Docker Hub から取り出すことができます。 100 文字まで。
  • target_url: 処理結果が得られる URL。 Docker Hub から取り出すことができます。

コールバック本体部分の例

{
  "state": "success",
  "description": "387 tests PASSED",
  "context": "Continuous integration by Acme CI",
  "target_url": "https://ci.acme.com/results/afd339c1c3d27"
}
Docker, webhooks, hub, builds