Drone CIでプライベートなカスタムイメージレジストリにpushする
表題のことをしようとしたら level=fatal msg="Error authenticating: exit status 1"
になり困ったのでメモ。
/root/.dockerにtemp volumeをattachすると実行できます。
kind: pipeline name: default steps: - name: docker build & push image: plugins/docker settings: repo: custom-docker-registry.hogehoge.mogemoge/hugehuge/poge tags: latest registry: custom-docker-registry.hogehoge.mogemoge username: from_secret: username password: from_secret: password volumes: - name: docker path: /root/.docker volumes: - name: docker temp: {}
なんでmountするの?
普通に以下のyamlで行けそうな気がしますが、これだとlevel=fatal msg="Error authenticating: exit status 1"
になります。
kind: pipeline name: default steps: - name: docker build & push image: plugins/docker settings: repo: custom-docker-registry.hogehoge.mogemoge/hugehuge/poge tags: latest registry: custom-docker-registry.hogehoge.mogemoge username: from_secret: username password: from_secret: password
Drone内でdockerイメージを使うとDroneが動作しているホストのdocker情報を使おうとしますが、Drone側で許可されていないと上記のエラーが発生するようです。
そのため、temp Volumeをattachすることで動作します。
Drone側でrepositoryを許可している場合は、privileged Modeを指定していればattachしなくても動作するようです。