Skip to content

yamamoto-febc/arukas-ship

Repository files navigation

aruas-ship

DockerHub & Arukas 連携Webhook アダプター

関連記事:Qiita:arukas-shipでプルリク駆動デリバリー

概要

DockerHubへのDockerイメージpush時に送信できるWebhookを利用して ArukasへのDockerコンテナのデプロイを行います。

about_arukas_ship.png

DockerのコンセプトであるBuild, Ship, and Run Any App, Anywhereのうち、Shipを担当するものです。

  • Build : 手元のマシン(開発時)、DockerHub(デプロイ時)
  • Ship : arukas-ship
  • Run : Arukas

arukas-shipを用いることで、手元のマシンで開発/テストしたDockerfileなどをGithub/Bitbucketへpushすれば DockerHubでビルド(Build)、arukas-shipでArukasへデプロイ(Ship)、Arukasで実行(Run)出来るようになります。

セットアップ/実行

1) Arukas上でarukas-shipコンテナ起動

DockerHubからのWebHookを待ち受けるためのコンテナを起動します。 あらかじめArukas APIキーを取得しておいてください。

Arukas コントロールパネルから新しいアプリケーションを作成します。

arukas_control_panel.png

各項目は以下のように入力してください。

項目名 入力内容
App Name 任意
Image yamamotofebc/arukas-ship
Instance 任意(110)
Memory 任意(256 or 512)
Endpoint 任意(ただし.arukascloud.io上で一意でないと登録できない)
Port 8080(下記のSHIP_PORTと同じ値を設定する)
Env 下記の4つを登録
Cmd なし

Envに登録する値

  • ARUKAS_JSON_API_TOKEN : Arukas APIトークン
  • ARUKAS_JSON_API_SECRET : Arukas APIシークレット
  • SHIP_TOKEN : 任意のランダムな文字列
  • SHIP_PORT : 8080

SHIP_TOKENはDockerHubからのWebHook登録時の認証用です。 WebHookのURLにここで指定したトークンを含めることで認証を行っています。 任意の十分に長いランダムな文字列を指定してください。

Endpointの確認

Arukas上でコンテナを起動したらEndpointのURLを控えておきます。

2-1) DockerHubへAutomation Buildリポジトリ追加

DockerHubでAutomation Buildリポジトリを追加します。

automation_build.png

2-2) WebHookの設定

WebHookの設定を行います。

setup_webhook.png

WebHook URLは以下のように設定します。

[控えておいたEndpointのURL]?token=[SHIP_TOKENに設定した文字列]&app=[任意のアプリケーション名]

例: https://shipping.arukascloud.io?token=YOUR_SHIP_TOKEN&app=TestApplication

appパラメータに指定した名前でArukas上にデプロイが行われます。

3) 実行(git push)

あとはAutomation Buildの設定をおこなっているGitリポジトリにPushすれば 自動でArukasへのデプロイが行われます。

すでにArukasへデプロイ済みのコンテナの場合は更新が行われます。

Q&A

Arukas上でarukas-shipが起動できないんだけど?

Arukasコントロールパネル上でエラーが出ていないか確認してください。 エラーが出ていない場合、イメージ名yamamotofebc/arukas-shipが正しいか確認してみてください。

起動確認はどうすればいいの?

Arukasコントロールパネル上で表示されるEndpoint URLに直接ブラウザなどでアクセスしてみてください。 実際にアプリのデプロイまで確認したい場合はこちらの仕様に沿ったデータを Endoint URLあてにPOSTしてみてください。

arukas-shipがデプロイした時のArukasの設定はどうなってるの?

以下のようなパラメーターでデプロイしています。

  • App Name : DockerHubで設定するWebhook URLに含まれるappパラメータの値
  • Image : DockerHubでWebhook登録したリポジトリのlatestイメージ
  • Instance : 1
  • Memory : 256
  • Endpoint : 空欄(Arukasによる自動割り当て)
  • Port : TCP 80番
  • Env : なし
  • Cmd : なし

これらを変更したい場合、あらかじめArukas上に同じApp Nameを持つアプリを 作成しておけばOKです。下記質問もご覧ください。

デプロイ先のArukasの設定を変えたいんだけど?

あらかじめArukas上に同じApp Nameを持つアプリを作成しておけばOKです。 arukas-shipは、同じApp Nameを持つアプリがすでにArukas上に存在する場合は 該当アプリの更新(パラメータ変更/コンテナ再起動)を行います。

License

This project is published under Apache 2.0 License.

Author