drone.io プライベートな環境でdockerイメージの Automated build を実現する

この記事は drone.io Advent Calendar 2017 - Adventar の13日目の記事です。

drone.io は Goで作られたオープンソースのCD (Continuous Delivery)環境です。

github.com

Docker HubにはリポジトリにあげたDockerfileを自動でビルドしてくれる Automated builds という機能があります。 しかし外に出したくないイメージを管理するために Docker Private Registry を利用しているしている場合はこの機能を利用することができません(Docker EEを利用する方法もあります)。

drone-docker plugin を利用してイメージのビルドを自動化しましょう。

.drone.yml は以下のようになります。ビルドするファイルと、push先のdocker-registeryを指定します。 プライベートなDocker Registryは証明書がアレなことも多いでしょうからinsecureオプションも指定できるようになっています。

build_image:
  image: plugins/docker
  dockerfile: ./Dockerfile
  insecure: true
  repo: docker-reg.example.com:5000/ci/test-kitchen
  registry: docker-reg.example.com:5000

どころでこのプラグインは中でdockerを使っていますが、trustedフラグなしで動きます。 これは docker:dind イメージを利用しており内部で docker in docker をしているためです。 コレを利用すればもう少し面白いことができそうです。