mutao.net

いわゆる雑記。

drone-ci構築

drone

Github上のmainブランチへのmergeや、PR作成をhookして.drone.ymlに記載したpipelineを実行する。 build deployなんかができる。詳しくは公式documentを参照。

readme.drone.io

localで構築してみる。

これも公式documentを見るだけでできる。

docker-compose.ymlを作成すれば楽になる。

readme.drone.io

Github OAtuth Appを作成するにはcallback用のパブリックなドメイン(IP)が必要なのでngrokを利用する。

ngrok.com

---
version: '3'

services:
  drone-server:
    image: drone/drone:2
    ports:
      - 8000:80
      - 443:443
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - .:/data
    restart: always
    environment:
      - DRONE_GITHUB_SERVER=https://github.com
      - DRONE_GITHUB_CLIENT_ID=XXX
      - DRONE_GITHUB_CLIENT_SECRET=XXX
      - DRONE_RPC_SECRET=XXX # openssl rand -hex 16 で取得したsecret key
      - DRONE_SERVER_HOST=XXX.ngrok.io # ngrokで取得したドメイン
      - DRONE_SERVER_PROTO=https
      - DRONE_TLS_AUTOCERT=true

  drone-agent:
    image: drone/drone:2
    command: agent
    restart: always
    depends_on:
      - drone-server
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - DRONE_RPC_SERVER=http://drone-server
      - DRONE_RPC_SECRET=XXX  # openssl rand -hex 16 で取得したsecret key
      - DRONE_RUNNER_CAPACITY=2
$ docker-compose up

ngrokで取得したURLをブラウザで表示すると以下のようなダッシュボードが見える。

f:id:mutaonet:20210711163907p:plain

適当な.drone.ymlをリポジトリに作成してbuildしてみることで完了。

今回はhello worldするだけの.drone.ymlを作成しました。

f:id:mutaonet:20210711164123p:plain

今後のためのメモ

コンテナ起動後にagent側がclusheし続けること。

問題なくbuildもできるけど、正常な状態ではないので調査したい。

drone-agent_1   | {"level":"fatal","msg":"main: source code management system not configured","time":"2021-07-11T07:40:39Z"}
drone-study_drone-agent_1 exited with code 1
drone-study_drone-agent_1 exited with code 1

ngrokでToo Many Connections

drone2系で起きやすい。1系よりも多くのconnectionを貼るのかもしれない。

安定した環境で入門してみるなら1系の方がいいかもしれない。UIは異なる。

f:id:mutaonet:20210711164337p:plain

ngrok再起動でdocker-compose.ymlを修正しなければならない

DRONE_SERVER_HOST の値を変更する必要がある。以外と手間なのでちゃんとした環境を作りたい。