drone-ci構築
drone
Github上のmainブランチへのmergeや、PR作成をhookして.drone.ymlに記載したpipelineを実行する。 build deployなんかができる。詳しくは公式documentを参照。
localで構築してみる。
これも公式documentを見るだけでできる。
docker-compose.ymlを作成すれば楽になる。
Github OAtuth Appを作成するにはcallback用のパブリックなドメイン(IP)が必要なのでngrokを利用する。
例
--- 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をブラウザで表示すると以下のようなダッシュボードが見える。
適当な.drone.ymlをリポジトリに作成してbuildしてみることで完了。
今回はhello worldするだけの.drone.ymlを作成しました。
今後のためのメモ
コンテナ起動後に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は異なる。
ngrok再起動でdocker-compose.ymlを修正しなければならない
DRONE_SERVER_HOST の値を変更する必要がある。以外と手間なのでちゃんとした環境を作りたい。