自動構築用の Webhooks

自動構築(automated build)の設定を作成するとき、オプションで webhook の設定もできます。webhook の設定を使えば、リポジトリで他のアプリケーションによるアクションが、自動構築リポジトリにイベントを発生させます。現時点の webhook ファイルは、自動構築リポジトリに対するイメージの構築か、新しいタグの追加を扱います。

webhook では、ターゲット URL とドライバに対する JSON ペイロードを指定します。以下の webhook は JSON ペイロードの送信に HTTP POST を使用します。

{
  callback_url: https://registry.hub.docker.com/u/svendowideit/testhook/hook/2141b5bi5i5b02bec211i4eeih0242eg11000a/,
  push_data: {
    images: [
        27d47432a69bca5f2700e4dff7de0388ed65f9d3fb1ec645e2bc24c223dc1cc3,
        51a9c7c1f8bb2fa19bcd09789a34e63f35abb80044bc10196e304f6634cc582c,
        ...
    ],
    pushed_at: 1.417566161e+09,
    pusher: trustedbuilder
  },
  repository: {
    comment_count: 0,
    date_created: 1.417494799e+09,
    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\nMAINTAINER\u0009SvenDowideit@home.org.au\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
  }
}

注釈

webhook のテストには requestb.in のようなツールを推奨します。また、Docker Hub サーバは IP アドレスをフィルタできないのでご注意ください。

webhook の連鎖

コールバックの確認

webhook 連鎖のコールバックを確認するには、次のようにします。

  1. リクエストする JSON ペイロードに callback_url 値を入れてから、読み込む
  2. 有効な JSON の内容に含まれる URL に対して、POST リクエストが送信

注釈

最後のコールバックが正常だった場合のみ、 連鎖リクエストが完了したとみなされます。

webhook のデバッグを簡単にしたり、結果を単に表示したい場合は、設定ページにある webhook の「History」をご覧ください。

JSON データのコールバック

以下の形式の JSON 構造がコールバックされます。

{
  state: success,
  description: 387 tests PASSED,
  context: Continuous integration by Acme CI,
  target_url: http://ci.acme.com/results/afd339c1c3d27
}

パラメータと説明:

  • state (必須): successfailureerror の値を受信。 success でなければ、webhook 連鎖は中断。
  • description :Docker Hub で利用可能な様々な説明を含む文字列。最大255文字。
  • context :操作に関連するコンテキストを含む文字列。Docker Hub が受信可能。最大100文字。
  • target_url :オペレーションで得られた結果を送る URL 。Docker Hub が受信可能。

参考

Webhooks for automated builds
https://docs.docker.com/docker-hub/webhooks/