drone.io プライベートな環境でdockerイメージの Automated build を実現する
この記事は drone.io Advent Calendar 2017 - Adventar の13日目の記事です。
drone.io は Goで作られたオープンソースのCD (Continuous Delivery)環境です。
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 をしているためです。 コレを利用すればもう少し面白いことができそうです。