CIツール「drone」の紹介
droneとは
オープンソースのCI(継続的インテグレーション)ツール githubでのプルリクエストやプッシュ等のトリガーが実行される毎に 自動で新規でコンテナを作成し、テストを行ってくれるいい奴
メリット
- 毎回コンテナ起動からテストが開始されるため、環境に左右されずらいシステムになっていく
- drone自体もコンテナで起動するため、ポータビリティが高い
- yamlでのビルド設定で、煩雑なGUI操作がない
- 開発者に優しく、CLI環境も用意されている
- プラグインはコンテナを連携させるような形で容易に実現できる
使い方
- レポジトリのトップに設定を記述した
.drone.yaml
を設置するだけ - githubオーガナイズのメンバー以外はログイン出来ないとかの設定が簡単
簡単に試せる
drone自体がコンテナでの提供前提なので、dockerで簡単にサーバが構築できる ec2上で簡単に構築する事が出来ました (ちゃんと各imageをdocker pullしてからupしてね)
今回検証に利用したdocker-compose.yaml
version: '2' services: drone-db: image: mysql/mysql-server:latest ports: - 3306 volumes: - /root/drone/data:/var/lib/mysql restart: always hostname: drone-db environment: - MYSQL_DATABASE=drone - MYSQL_USER=drone - MYSQL_PASSWORD=drone drone-server: image: drone/drone:0.8 ports: - 80:8000 - 9000 depends_on: - drone-db volumes: - /root/drone:/var/lib/drone/ restart: always environment: - DRONE_OPEN=true - DRONE_HOST=127.0.0.1 - DRONE_GITHUB=true - DRONE_GITHUB_CLIENT={見せらせないよ} - DRONE_GITHUB_SECRET={見せられないよ} - DRONE_ORGS=nantoka-team - DRONE_ADMIN=naganeys - DRONE_SECRET=dronedronedrone - DRONE_DATABASE_DRIVER=mysql - DRONE_DATABASE_DATASOURCE=drone:drone@tcp(drone-db:3306)/drone?parseTime=true drone-agent: image: drone/agent:0.8 command: agent restart: always depends_on: - drone-server volumes: - /var/run/docker.sock:/var/run/docker.sock environment: - DRONE_SERVER=drone-server:9000 - DRONE_SECRET=dronedronedrone