drone.io Github Enterprise連携設定

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

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

github.com

GitLabに Gitlab CI があるのでいいのですが、Github EntepriseにはCIの機能がありません。そのためdrone.ioは Github Enterpriseでの利用が多いとは思いますが、情報があまりないと思われるのでこの機会に設定方法をご紹介します。

about.gitlab.com

Github Enterpriseとの連携設定方法

基本的には Installation Overview を見てもらえればいいんですが、 画像つきでご紹介します。

まずはGithub Enteprise上でOAuth Applicationの登録を行います。 OAuthのためdrone利用者の権限で各リポジトリにはアクセスを行いますので、OAuth Applicationの登録自体はどこで行っても構いません。個人アカウントより管理用のOrganizationを作ってそこに登録するのが管理上よいと思います。

Authorization callback URL は <scheme>://<host>/authorize で設定します。

f:id:ashphy22:20171202210649p:plain

登録すると以下のように Client IDClient Secret が発行されます。

f:id:ashphy22:20171202211932p:plain

あとはそのまま環境変数DRONE_GITHUB_CLIENTDRONE_GITHUB_SECRET に突っ込んであげれば良いです。

version: '2'

services:
  drone-server:
    image: drone/drone:0.8.0
    ports:
      - 80:8000
      - 9000:9000
    volumes:
      - /var/lib/drone:/var/lib/drone/
    restart: always
    environment:
      - DRONE_OPEN=true
      - DRONE_HOST=drone.example.com
      - DRONE_GITHUB=true
      - DRONE_GITHUB_URL=https://ghe.example.com/
      - DRONE_GITHUB_CLIENT=0123456789abcdef0123
      - DRONE_GITHUB_SECRET=0123456789abcdef0123456789abcdef01234567