そんな今日この頃の技術ネタ

本家側に書くほどでもない小ネタ用

GitHubとDockerHubを連携させて自動でイメージのビルドを行ってみる

 ローカルにDocker Registry立てたりGCR使ったりはしたことあったけど本家たるDockerHubって使ったことが無かったので、思い立ってちゃんと使ってみることにした。

 DockerHubにはAUTOMATED BUILDというGitHub(もしくはbitBucket)のリポジトリにDockerfileを含んだpushすると自動でイメージをビルドしてくれる機能がある。

 実際にイメージを使う側としても、Dockerfileが公開されてて人為的な操作の入らないAutomated Buildじゃないと怖くて使う気がしないわけで、DockerHubに公開する際はどんどん活用していきたい。


 何はともあれ、最初にアカウントを作成しておく。

https://hub.docker.com/hub.docker.com

f:id:blue1st:20170918033537p:plain

f:id:blue1st:20170918032822p:plain

 (最初慌ててここでリポジトリを作成してしまったのだが、後からAutomated buildを設定する項目は見当たらなかったので多分最初からそれ用に作らないといけなそう。要注意だ。)


 先にGitHubのアカウントとの連携を行う。アイコンより「Create Automated Build」を選択すると、連携用のページが表示される。

f:id:blue1st:20170918033044p:plain

f:id:blue1st:20170918033131p:plain

 今回はGitHubを選び、アクセス権を選択する。とりあえずおすすめに任せる。

f:id:blue1st:20170918033157p:plain

f:id:blue1st:20170918033310p:plain


 晴れて連携が行われたということで、再度アイコンより「Create Automated Build」を選択し、GitHubから対象となるプロジェクトを選択する。

f:id:blue1st:20170918033436p:plain

 リポジトリ名だの説明だのを記述することで、リポジトリを作成できる。

f:id:blue1st:20170918033818p:plain

 リポジトリページの「Build Settings」タブより、どのブランチへのプッシュを対象にするかとかどんなタグをふるかとかを設定できる。

f:id:blue1st:20170918033914p:plain


 そんなこんなでDockerfileをpushすると、設定した通りイメージのビルドが始まる。

f:id:blue1st:20170918034135p:plain

 正しく完了するとイメージが登録される。

f:id:blue1st:20170918034227p:plain

$ docker search blue1st
NAME            DESCRIPTION    STARS     OFFICIAL   AUTOMATED
blue1st/hubot   yoeman+hubot   0                    [OK]

 少しタイムラグがあって、Dockerfileも読み込まれるようだ。

f:id:blue1st:20170918034526p:plain

Docker

Docker