Overview● What is Continuous Deploy?● This is what we are doing today● Meet the tools ○ Play! 2 Framework ○ Atlassian Bitbucket ○ CloudBees ○ Heroku● DEMO!● Is all this really for FREE*?● Appendix A - Continuous Deploy recipe● Appendix B - Links and resources
What is Continuous Deploy?To continuously deploy software into targetenvironment upon push/check in to blessedVCSContinious Integration, Continuous Deliveryand DevOps are are subset or supersets of thesame idéas, tools and methodologies
Meet the toolsRuby on Rails inspired web framework. Buildswith Scala Build Tool.Both Scala and Java, foundation rewritten inPlay2.
Meet the toolsGit hosting that allows for free privaterepositories. Free private git and mercurialrepos.The competitor, Github, can be used as well butonly public repos are free
Meet the toolsOnline Jenkins Continuous Integration serverhosting.Travis CI is an interesting alternative, butwould not work well for this scenario as there isno private way to store private SSL keys.
Meet the toolsPolyglot cloud PAAS hosting. Supports Ruby,Java, Scala, Cloujure and Python in the CeladonCedar stackSolves package archiving (Git), deployautomation, rollback and provides a third partyadd-on community (DB, Logging, Messaging)Heroku runs in the Amazon cloud. Slug size foryour app is 100mb, inc. resources/artifacts
Is all this really for FREE*?Yes it is, but only for a give value for FREE...You may want to pay for the following1. Play! 2 Framework support a. Typesafe supscription. Price: email@example.com. Atlassian Bitbucket a. 5 collaborators free b. Paid plans ranging from $10 - $80/month3. CloudBees a. 300 minutes of build time, 10 developers free/month b. Plans ranging from $15 - $100/month c. Paid plans are fixed base price + pay as you go
4. Heroku Dynos a. 750 dyno hours/month free b. Dynos cost $0.05/hour (~35$/month per dyno) c. Dynos are charged per second d. If you spin up a Dyno Heroku will charge for it until you manually spin it down again. e. If you have less than two web Dynos, Heroku will spin down your Dyno after a period of inactivity. Starts up upon first subsequent request (5-10 sec). f. HireFireApp is a 3rd party Ruby application that can scale your Dynos based on response time and job queue. It will poll your app with HTTP requests, so Dyno spin down should not be an issue. Costs amounts to HireFireApp $10/month + Heroku $0.05/h. Only supports Ruby stack natively, but uses a simple JSON api your app can implement.
4. Heroku Third Party addons a. Convenient way to install third party addons b. Heroku PgSQL database 5MB is included i. $200/month for 1TB and 1.7GB Cache c. MongoLab 250MB free DB i. $10/month for 0.5GB and upwards d. IronMQ 250 000 request/month free i. $9.99/month for 10 000 000 requests/month ii. Both RabbitMQ and CloudAMQP are in private betas e. For file storage Heroku recommends Amazon S3 f. In general the add-ons can be pricy, but there is no lockin, you can get started in Heroku and move to those things that turns out to be too expensiveMore addons: https://addons.heroku.com/
Appendix A Continuous Deploy recipe1. Create Heroku App a. Configure custom buildpack to keep Slug size down b. Is it deployed?2. Create Git repos a. Create remote repo b. Clone repo c. Add Heroku remote d. Create Play Application in subfolder e. Move files to parent dir f. Add Procfile config for Play! g. Add gitignore h. git push heroku master
4. Create CloudBees job a. Create job b. Configure CloudBees access to Git repos (Heroku and Atlassian/Github) c. Install Jenkins SBT plugin to CloudBees d. Add Git Plugin e. Configure job Git remotes f. Add tagging g. Fire up build!5. Commit, push to trigger a build followed by deploy into Heroku
Appendix B Links and resourcesHireFireApp support ticket describing API:https://hirefireapp.tenderapp.com/discussions/questions/66-support-for-auto-scaling-web-dyno-for-java-play-app-running-on-cedar-stackHeroku Scala Build Packhttps://github.com/heroku/heroku-buildpack-scalaOpenShift, Heroku competitorhttps://openshift.redhat.comOpenShift DIY Cartridge Play2 Quickstarthttps://github.com/opensas/play2-openshift-quickstartThis presentation is available on SlideSharehttp://www.slideshare.net/magnusart/continuous-deploy