社内勉強会で Drone について話した資料です
Drone CI2015-10-20@dtan4http://www.humanitarianstudies.no/wp-content/uploads/2014/06/drone-sunset.jpg
View Slide
2छྨͷ Drone CI• Drone.io• CI as a Service• Drone• OSS• @dtan4 ͕ಋೖ͠Α͏ͱฃಆ͍ͯ͠Δͭ
Drone.iohttps://drone.io
Drone.io• CI as a Service ͱͯ͠ͷ Drone• OSS ແྉɺPrivate Repository ༗ྉ• GitHub, Bitbucket, Google Code ରԠ• ͖ͳΑ͏ʹςετεΫϦϓτΛ͔͚Δ• ϦϙδτϦϧʔτͷ .yml ͡Όͳ͍…• S3, Heroku, Dotcloud, … ʹσϓϩΠՄೳhttps://drone.io/
Drone.io
Drone.io …• ʢͨͿΜʣDocker Βͳ͍ & ͬͯͳ͍• ͍·Ͳ͖ .yml ͰεΫϦϓτॻ͚ͳ͍ͷ…• ଞΑΓ͍҆ͱ͍͏Θ͚Ͱͳ͍• m1.small + Jenkins ΑΓ͍҆ͱ͍͏͚ͩ• ςετΛฒྻʹ͢Δͷ CircleCI ΑΓߴ͍• Jenkins ͷ͍উखΛΫϥυαʔϏεͰɺ ͱ͍͏ਓ͚ʁ
Dronedrone/drone
Drone• OSS ͷ Docker-based CI• Ϗϧυ͝ͱʹಠཱͨ͠ Docker Container ཱ͕ͭ• DB ͱ͔Ϗϧυ͝ͱʹཱͭ• Drone.io ͷ @bradrydzewski ͕Φʔφʔ• Golang drone/drone
Drone• GitHub, GH:E, Bitbucket, GitLab ʹରԠ• ϦϙδτϦϧʔτͷ .drone.yml ʹ ςετεΫϦϓτΛॻ͘• OSS CI ͩͱ Drone ͱ GitLab CI ͘Β͍͔͠ ରԠͯ͠ͳ͍• Heroku, S3, … ͷσϓϩΠରԠ• Email, HipChat, Slack, … ͷ௨ʹରԠdrone/drone
Jenkins#1 #2 #3 #4
Drone#1 #2 #3 #4
Version of Drone• Version 0.3 (master)• ݱࡏͷ stable• 1ϲ݄͘Β͍์ஔ͞ΕͯΔ• Version 0.4 (0.4.0)• Ӷҙ։ൃத• .drone.yml ͷޓੑͳ͍drone/drone
.drone.ymlimage: ruby:2.2.3cache:- vendor/bundleenv:- RAILS_ENV=testservices:- postgresscript:- bundle install -j4 --path=vendor/bundle- bundle exec rake db:test:prepare- bundle exec rspec0.3Α͋͘Δ RailsDrone ެࣜΠϝʔδ or ެ։͞Ε͍ͯΔΠϝʔδ͖͜͜ͳΠϝʔδ͑Δ
.drone.ymlcache:mount:- vendor/bundlecompose:database:image: postgres:9.4build:image: ruby:2.2.3environment:- DATABASE_USER=postgres- RAILS_ENV=testcommands:- bundle install -j4 --path=vendor/bundle- bundle exec rake db:test:prepare- bundle exec rspec0.4Α͋͘Δ Rails
ςετը໘0.3Ϗϧυ్தͰΩϟϯηϧͰ͖ͳ͍…
ςετը໘0.4
Secret Variables• 0.3, 0.4 ͱʹ Web UI ্ͰઃఆՄೳ• wercker Έ͍ͨʹӅͯ͘͠Εͳ͍• 0.4 ͩͱ .drone.sec ͱ͍͏ϑΝΠϧʹ҉߸Խͯ͠ ϦϙδτϦʹஔ͚Δ• travis encrypt ͱ ࣅͨײ͡
Docker on Drone• جຊతʹͰ͖ͳ͍• ςετίϯςφ͕ /var/run/docker.sock Ϛϯτͯ͠ͳ͍ͨΊ• ଞͷςετίϯςφΛফͤͯ͠·͏• Docker in Docker ͳΒͰ͖Δ…ʁ (#380)• ߟ͑ͳ͓ͤͱ͍͏هࣄ͋Δ• DOCKER_HOST Λผϗετʹ͚ͯ docker build docker-compose ͢Δͱ͔…ʁhttp://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/
ॴײ• ࣗલͰ CI ࣋ͭͳΒ͜ΕҰ• Docker ίϯςφͱͯ͠ಈ͔͢ͷ༰қ• ΠϚυΩͷ CI as a service ͷػೳΛͪΌΜͱ ͑Δ• ·ͩ·ͩ։ൃ్্• Drone 0.4 ͱ PostgreSQL ͷ૬ੑ͕ѱ͍• ͍͟ͱͳͬͨΒιʔεಡΜͰͤΔ• OSS! OSS!