SlideShare a Scribd company logo
1 of 26
Download to read offline
Continuous Delivery in the Cloud with
                      ®
Grails and CloudBees
09/12/11




            ©2011 Cloud Bees, Inc. All Rights Reserved
About Marco
Enterprise Java developer.
Now working primarily with Groovy & Grails.
Advocate of using G&G on Linux!

Previously: Shazam, Associated Newspapers
Currently: Burberry

Maintainer:
Groovy, Grails and Griffon PPA for Ubuntu
Grails plugins: cloud-bees, itunes-service, jmock

@marcoVermeulen




                       ©2011 CloudBees, Inc. All Rights Reserved
About Nicolas
Senior Engineer Cloudbees
  ● customer support
  ● conferences & evangelism
  ● DEV@Cloud contributor

Jenkins contributor
Maven committer
JUG-Leader




                      ©2011 CloudBees, Inc. All Rights Reserved
Overview
 ● All things Continuous: some terminology
 ● The Deployment Pipeline
 ● Our Quest in taking it to the Cloud
 ● The Matrix
 ● About CloudBees
 ● The Grails cloud-bees plugin
 ● Demo 1: grails cloud-bees
 ● Demo 2: Continuous Deployment
 ● The Web Console




                ©2011 CloudBees, Inc. All Rights Reserved
All Things Continuous...
Continuous Integration (CI):




                What is it?




                ©2011 CloudBees, Inc. All Rights Reserved
All Things Continuous...
Continuous Integration (CI):
Coined by Kent Beck as part of eXtreme Programming.

   ● integrate work frequently into mainline
   ● multiple integrations per day
   ● integration verified by automated tests
   ● results in subsequent build
   ● detect integration errors early!
   ● results in cohesive software more rapidly
                                                                          -Martin Fowler
http://martinfowler.com/articles/continuousIntegration.html




                              ©2011 CloudBees, Inc. All Rights Reserved
All Things Continuous...
Continuous Deployment:


  "...is actually deploying every change into production,
                every day or more frequently."

                                                                          -Martin Fowler


http://martinfowler.com/delivery.html




                              ©2011 CloudBees, Inc. All Rights Reserved
All Things Continuous...
Continuous Delivery:


      "...is about keeping your application in a state
     where it is always able to deploy into production."

                                                                          -Martin Fowler


http://martinfowler.com/delivery.html




                              ©2011 CloudBees, Inc. All Rights Reserved
The Deployment Pipeline




            ©2011 CloudBees, Inc. All Rights Reserved
The Deployment Pipeline
                                                        DEV



                                                        Integ.
               build, test,
               analyse,...
                                                        Staging



                                                        PROD




            ©2011 CloudBees, Inc. All Rights Reserved
Implementing efficient build pipeline
                      ● smaller jobs
                      ● parallelism
                      ● build promotion
The Quest
 ● PaaS not IaaS
 ● Groovy & Grails support
 ● Robust Developer Tooling
 ● Hosted Continuous Integration (CI) solution
 ● Support for Continuous Deployment
 ● Cloud based
 ● Holistic Solution
 ● Runtime monitoring and tooling




                ©2011 CloudBees, Inc. All Rights Reserved
The Matrix
Side-by-side comparison of Cloud Vendors
   Vendor      PaaS/IaaS    Deployment       Availability        Tooling      Hosted CI      Database
EC2          Iaas          Deploy any      Fully Available Eclipse          None, may be   Amazon RDS:
                           WAR                                              provisioned    MySQL,Oracle

Elastic      PaaS                          Fully Available                  None
Beanstalk

CloudBees    PaaS          Deploy and      Fully Available Eclipse Plugin   Jenkins &      MySQL,
                           WAR                                              Nectar         3rd party DS

CloudFoundry PaaS          Any Spring or   Still in Beta  Spring Source None               MySQL,
                           Grails app.                    Tool Suite                       Mongo, Redis
                                                          +CLI
Google App   PaaS          Java + Servlet Fully Available Eclipse + CLI None               BigTable,
Engine                     environment                                                     MySQL with
                                                                                           JPA or JDO
Gaelyk       PaaS          Java + Servlet Fully Available Eclipse + CLI     None           BigTable,
                           env + Groovy!                                                   MySQL with
                                                                                           JPA or JDO
Heroku       PaaS          Not JEE         Fully Available CLI              None           Postgres,
                           compliant! No                                                   3rd party SaS
                           WARs!




                              ©2011 CloudBees, Inc. All Rights Reserved
About CloudBees
     Our Mission        Become the leading Java™ Platform
                        as a Service (PaaS)
                          ● CloudBees services the complete
                            lifecycle of Cloud application
                            development and deployment.
       Strategy           ● Focus on Applications
                          ● Transparent management of
                            servers, VMs and IT.

                        DEV@cloud: Cloud Services for
                        Developers
  Why we're different   RUN@cloud: Frictionless runtime
                        PaaS for Java apps
CloudBees PaaS

        Continuous Development - Continuous Deployment

        Code            Build        Test           Stage      Deploy        Manage


            DEV@cloud
     Repositories               Jenkins                    MySQL     Java EE 6 WP


                                           Core
                                          Services
          Scalability                       Availability                Reliability

          Monitoring                         Alerting                     Billing

                                     Deployment Manager




                         ©2011 CloudBees, Inc. All Rights Reserved
CloudBees founding team
Grails cloud-bees Plugin
● Provides CloudBees SDK with no installation
● Handy CLI scripts from within Grails project
● Allow for interaction with Apps and DBs
● All provided scripts can be called from within
  a Jenkins build!




                  ©2011 CloudBees, Inc. All Rights Reserved
Grails cloud-bees Plugin
Applications can be Deployed and Deleted:
grails bees-app-deploy
grails bees-app-delete

Applications can be Interrogated:
grails bees-app-info
grails bees-app-list

Applications can be Controlled:
grails bees-app-start
grails bees-app-stop
grails bees-app-restart




                          ©2011 CloudBees, Inc. All Rights Reserved
Grails cloud-bees Plugin
Application logs tailed in real time!
grails bees-app-tail

Dec 5, 2011 3:30:42 PM com.staxnet.appserver.utils.AppServerConfiguration readAppServerConfig
INFO: loading app config: /var/staxapps/8995/appserver.xml
Dec 5, 2011 3:30:42 PM com.staxnet.appserver.TomcatServerBase initConfiguration
INFO: Creating Tomcat server configuration at /var/staxapps/8995/staxcat/work
Dec 5, 2011 3:30:42 PM net.stax.appserver.admin.AdminEngine createAdminHttpConnector
INFO: Initializing admin-http-connector protocol: org.apache.coyote.http11.Http11Protocol
Dec 5, 2011 3:30:43 PM net.stax.appserver.webapp.WebAppEngine createWebContexts
INFO: loading app [] from /var/staxapps/8995/staxcat/install/webapp.war
Dec 5, 2011 3:30:43 PM net.stax.appserver.webapp.WebAppEngine
...




                                     ©2011 CloudBees, Inc. All Rights Reserved
Grails cloud-bees Plugin
Databases can be Provisioned and Deleted:
grails bees-db-create
grails bees-db-delete

Databases can be Interrogated:
grails bees-db-info
grails bees-db-list




                        ©2011 CloudBees, Inc. All Rights Reserved
Grails cloud-bees Plugin



           Demo!


            ©2011 CloudBees, Inc. All Rights Reserved
Deploying the Beeline
Setup
  ● Open your CloudBees account.
  ● Add config to: $HOME/.grails/settings.groovy

cloudbees.account = 'ACCOUNT'
cloudbees.api.key = 'KEY'
cloudbees.api.secret = 'SECRET'

The Project
Clone the project from GitHub:

git clone git@github.com:marcoVermeulen/beeline.git




                         ©2011 CloudBees, Inc. All Rights Reserved
Deploying the Beeline
The Plugin
grails install-plugin cloud-bees
Resolving plugin cloud-bees. Please wait...
...
Plugin cloud-bees-0.5 installed
Plugin provides the following new scripts:
------------------------------------------
grails bees-app-stop
grails bees-app-list
grails bees-app-restart
grails bees-app-delete
grails bees-db-info
grails bees-app-start
grails bees-test-app
grails bees-app-checksums
grails bees-db-create
grails bees-app-tail
grails bees-db-delete
grails bees-app-deploy
grails bees-app-info
grails bees-db-list




                                         ©2011 CloudBees, Inc. All Rights Reserved
Deploying the Beeline
Create a Database in the Cloud!
grails bees-db-create
Database created successfully.
Database ID : beelinez


grails bees-db-info
Database Name : beelinez
   created : Wed Dec 07 23:10:57 GMT 2011
     owner : hashcode
  username : beelinez
  password : changeme!
    master : ec2-174-129-9-255.compute-1.amazonaws.com
     port : 3306
    slaves : []
    status : active

Also gives a handy datasource definition to copy and paste
into your DataSource.groovy file!!!




                                    ©2011 CloudBees, Inc. All Rights Reserved
Deploying the Beeline
To the Cloud we go!
grails bees-app-deploy
Preparing the BeesClient ...
Deploying hashcode/beeline tagged at version 0.1
........................uploaded 25%
........................uploaded 50%
........................uploaded 75%
........................upload completed
deploying application to server(s)...
Application uploaded successfully to: http://beeline.hashcode.cloudbees.net




                                    That's all there is to it!




                                    ©2011 CloudBees, Inc. All Rights Reserved
Grails cloud-bees Plugin



           Q&A


            ©2011 CloudBees, Inc. All Rights Reserved

More Related Content

What's hot

Tecnologias Oracle em Docker Containers On-premise e na Nuvem
Tecnologias Oracle em Docker Containers On-premise e na NuvemTecnologias Oracle em Docker Containers On-premise e na Nuvem
Tecnologias Oracle em Docker Containers On-premise e na Nuvem
Bruno Borges
 

What's hot (20)

Spring Cloud Function: Where We Were, Where We Are, and Where We’re Going
Spring Cloud Function: Where We Were, Where We Are, and Where We’re GoingSpring Cloud Function: Where We Were, Where We Are, and Where We’re Going
Spring Cloud Function: Where We Were, Where We Are, and Where We’re Going
 
EclipseLink: Beyond Relational and NoSQL to Polyglot and HTML5
EclipseLink: Beyond Relational and NoSQL to Polyglot and HTML5EclipseLink: Beyond Relational and NoSQL to Polyglot and HTML5
EclipseLink: Beyond Relational and NoSQL to Polyglot and HTML5
 
Welcome to the Metrics
Welcome to the MetricsWelcome to the Metrics
Welcome to the Metrics
 
Spring Native and Spring AOT
Spring Native and Spring AOTSpring Native and Spring AOT
Spring Native and Spring AOT
 
Pivotal Cloud Foundry 2.0: First Look
Pivotal Cloud Foundry 2.0: First LookPivotal Cloud Foundry 2.0: First Look
Pivotal Cloud Foundry 2.0: First Look
 
Melhore o Desenvolvimento do Time com DevOps na Nuvem
Melhore o Desenvolvimento do Time com DevOps na NuvemMelhore o Desenvolvimento do Time com DevOps na Nuvem
Melhore o Desenvolvimento do Time com DevOps na Nuvem
 
Java EE Arquillian Testing with Docker & The Cloud
Java EE Arquillian Testing with Docker & The CloudJava EE Arquillian Testing with Docker & The Cloud
Java EE Arquillian Testing with Docker & The Cloud
 
NetDevOps Development Environments
NetDevOps Development EnvironmentsNetDevOps Development Environments
NetDevOps Development Environments
 
Migrating From Applets to Java Desktop Apps in JavaFX
Migrating From Applets to Java Desktop Apps in JavaFXMigrating From Applets to Java Desktop Apps in JavaFX
Migrating From Applets to Java Desktop Apps in JavaFX
 
Tecnologias Oracle em Docker Containers On-premise e na Nuvem
Tecnologias Oracle em Docker Containers On-premise e na NuvemTecnologias Oracle em Docker Containers On-premise e na Nuvem
Tecnologias Oracle em Docker Containers On-premise e na Nuvem
 
Peering Inside the Black Box: A Case for Observability
Peering Inside the Black Box: A Case for ObservabilityPeering Inside the Black Box: A Case for Observability
Peering Inside the Black Box: A Case for Observability
 
Improving Your Company’s Health with Middleware Takeout
Improving Your Company’s Health with Middleware TakeoutImproving Your Company’s Health with Middleware Takeout
Improving Your Company’s Health with Middleware Takeout
 
Oracle ravello overview
Oracle ravello overviewOracle ravello overview
Oracle ravello overview
 
Spring Boot Loves K8s
Spring Boot Loves K8sSpring Boot Loves K8s
Spring Boot Loves K8s
 
Not Just Initializing
Not Just InitializingNot Just Initializing
Not Just Initializing
 
Introduce yourself to java 17
Introduce yourself to java 17Introduce yourself to java 17
Introduce yourself to java 17
 
MicroProfile for MicroServices
MicroProfile for MicroServicesMicroProfile for MicroServices
MicroProfile for MicroServices
 
Ma forge++ : @Cloud
Ma forge++ : @CloudMa forge++ : @Cloud
Ma forge++ : @Cloud
 
From Monolith to K8s - Spring One 2020
From Monolith to K8s - Spring One 2020From Monolith to K8s - Spring One 2020
From Monolith to K8s - Spring One 2020
 
Micronaut: A new way to build microservices
Micronaut: A new way to build microservicesMicronaut: A new way to build microservices
Micronaut: A new way to build microservices
 

Similar to Continuous Delivery with Grails and CloudBees

Stairway to heaven webinar
Stairway to heaven webinarStairway to heaven webinar
Stairway to heaven webinar
CloudBees
 
DevNexus 2017 - Building and Deploying 12 Factor Apps in Scala, Java, Ruby, a...
DevNexus 2017 - Building and Deploying 12 Factor Apps in Scala, Java, Ruby, a...DevNexus 2017 - Building and Deploying 12 Factor Apps in Scala, Java, Ruby, a...
DevNexus 2017 - Building and Deploying 12 Factor Apps in Scala, Java, Ruby, a...
Neil Shannon
 
Intalio create and cloudfoudry - short
Intalio create and cloudfoudry - shortIntalio create and cloudfoudry - short
Intalio create and cloudfoudry - short
hmalphettes
 
Enterprise software needs a PaaS
Enterprise software needs a PaaSEnterprise software needs a PaaS
Enterprise software needs a PaaS
hmalphettes
 

Similar to Continuous Delivery with Grails and CloudBees (20)

GigaSpaces Cloudify - The PaaS Jailbreaker
GigaSpaces Cloudify - The PaaS Jailbreaker GigaSpaces Cloudify - The PaaS Jailbreaker
GigaSpaces Cloudify - The PaaS Jailbreaker
 
CloudBees
CloudBeesCloudBees
CloudBees
 
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
 
Tanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - EnglishTanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - English
 
Virtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - EnglishVirtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - English
 
.NET Application Modernization with PAS and Azure DevOps
.NET Application Modernization with PAS and Azure DevOps.NET Application Modernization with PAS and Azure DevOps
.NET Application Modernization with PAS and Azure DevOps
 
Successful PaaS and CI in the Cloud - EclipseCon 2012
Successful PaaS and CI in the Cloud - EclipseCon 2012Successful PaaS and CI in the Cloud - EclipseCon 2012
Successful PaaS and CI in the Cloud - EclipseCon 2012
 
Journée DevOps : De l'intégration continue au déploiement continu avec Jenkins
Journée DevOps : De l'intégration continue au déploiement continu avec JenkinsJournée DevOps : De l'intégration continue au déploiement continu avec Jenkins
Journée DevOps : De l'intégration continue au déploiement continu avec Jenkins
 
Comparing open source private cloud platforms
Comparing open source private cloud platformsComparing open source private cloud platforms
Comparing open source private cloud platforms
 
Stairway to heaven webinar
Stairway to heaven webinarStairway to heaven webinar
Stairway to heaven webinar
 
Mobile Application Testing in the Cloud - Oct 2012
Mobile Application Testing in the Cloud - Oct 2012Mobile Application Testing in the Cloud - Oct 2012
Mobile Application Testing in the Cloud - Oct 2012
 
JavaCro'14 - WebLogic-GlassFish-JaaS Strategy and Roadmap – Duško Vukmanović
JavaCro'14 - WebLogic-GlassFish-JaaS Strategy and Roadmap – Duško VukmanovićJavaCro'14 - WebLogic-GlassFish-JaaS Strategy and Roadmap – Duško Vukmanović
JavaCro'14 - WebLogic-GlassFish-JaaS Strategy and Roadmap – Duško Vukmanović
 
DevNexus 2017 - Building and Deploying 12 Factor Apps in Scala, Java, Ruby, a...
DevNexus 2017 - Building and Deploying 12 Factor Apps in Scala, Java, Ruby, a...DevNexus 2017 - Building and Deploying 12 Factor Apps in Scala, Java, Ruby, a...
DevNexus 2017 - Building and Deploying 12 Factor Apps in Scala, Java, Ruby, a...
 
Intalio create and cloudfoudry - short
Intalio create and cloudfoudry - shortIntalio create and cloudfoudry - short
Intalio create and cloudfoudry - short
 
Enterprise software needs a PaaS
Enterprise software needs a PaaSEnterprise software needs a PaaS
Enterprise software needs a PaaS
 
Implementing DevOps – How it came to the fore, its key elements and example d...
Implementing DevOps – How it came to the fore, its key elements and example d...Implementing DevOps – How it came to the fore, its key elements and example d...
Implementing DevOps – How it came to the fore, its key elements and example d...
 
Custom Runtimes for the Cloud
Custom Runtimes for the CloudCustom Runtimes for the Cloud
Custom Runtimes for the Cloud
 
Getting Started with PaaS
Getting Started with PaaSGetting Started with PaaS
Getting Started with PaaS
 
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)
 
Getting Started with Platform-as-a-Service
Getting Started with Platform-as-a-ServiceGetting Started with Platform-as-a-Service
Getting Started with Platform-as-a-Service
 

Recently uploaded

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Recently uploaded (20)

2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 

Continuous Delivery with Grails and CloudBees

  • 1. Continuous Delivery in the Cloud with ® Grails and CloudBees 09/12/11 ©2011 Cloud Bees, Inc. All Rights Reserved
  • 2. About Marco Enterprise Java developer. Now working primarily with Groovy & Grails. Advocate of using G&G on Linux! Previously: Shazam, Associated Newspapers Currently: Burberry Maintainer: Groovy, Grails and Griffon PPA for Ubuntu Grails plugins: cloud-bees, itunes-service, jmock @marcoVermeulen ©2011 CloudBees, Inc. All Rights Reserved
  • 3. About Nicolas Senior Engineer Cloudbees ● customer support ● conferences & evangelism ● DEV@Cloud contributor Jenkins contributor Maven committer JUG-Leader ©2011 CloudBees, Inc. All Rights Reserved
  • 4. Overview ● All things Continuous: some terminology ● The Deployment Pipeline ● Our Quest in taking it to the Cloud ● The Matrix ● About CloudBees ● The Grails cloud-bees plugin ● Demo 1: grails cloud-bees ● Demo 2: Continuous Deployment ● The Web Console ©2011 CloudBees, Inc. All Rights Reserved
  • 5. All Things Continuous... Continuous Integration (CI): What is it? ©2011 CloudBees, Inc. All Rights Reserved
  • 6. All Things Continuous... Continuous Integration (CI): Coined by Kent Beck as part of eXtreme Programming. ● integrate work frequently into mainline ● multiple integrations per day ● integration verified by automated tests ● results in subsequent build ● detect integration errors early! ● results in cohesive software more rapidly -Martin Fowler http://martinfowler.com/articles/continuousIntegration.html ©2011 CloudBees, Inc. All Rights Reserved
  • 7. All Things Continuous... Continuous Deployment: "...is actually deploying every change into production, every day or more frequently." -Martin Fowler http://martinfowler.com/delivery.html ©2011 CloudBees, Inc. All Rights Reserved
  • 8. All Things Continuous... Continuous Delivery: "...is about keeping your application in a state where it is always able to deploy into production." -Martin Fowler http://martinfowler.com/delivery.html ©2011 CloudBees, Inc. All Rights Reserved
  • 9. The Deployment Pipeline ©2011 CloudBees, Inc. All Rights Reserved
  • 10. The Deployment Pipeline DEV Integ. build, test, analyse,... Staging PROD ©2011 CloudBees, Inc. All Rights Reserved
  • 11. Implementing efficient build pipeline ● smaller jobs ● parallelism ● build promotion
  • 12. The Quest ● PaaS not IaaS ● Groovy & Grails support ● Robust Developer Tooling ● Hosted Continuous Integration (CI) solution ● Support for Continuous Deployment ● Cloud based ● Holistic Solution ● Runtime monitoring and tooling ©2011 CloudBees, Inc. All Rights Reserved
  • 13. The Matrix Side-by-side comparison of Cloud Vendors Vendor PaaS/IaaS Deployment Availability Tooling Hosted CI Database EC2 Iaas Deploy any Fully Available Eclipse None, may be Amazon RDS: WAR provisioned MySQL,Oracle Elastic PaaS Fully Available None Beanstalk CloudBees PaaS Deploy and Fully Available Eclipse Plugin Jenkins & MySQL, WAR Nectar 3rd party DS CloudFoundry PaaS Any Spring or Still in Beta Spring Source None MySQL, Grails app. Tool Suite Mongo, Redis +CLI Google App PaaS Java + Servlet Fully Available Eclipse + CLI None BigTable, Engine environment MySQL with JPA or JDO Gaelyk PaaS Java + Servlet Fully Available Eclipse + CLI None BigTable, env + Groovy! MySQL with JPA or JDO Heroku PaaS Not JEE Fully Available CLI None Postgres, compliant! No 3rd party SaS WARs! ©2011 CloudBees, Inc. All Rights Reserved
  • 14. About CloudBees Our Mission Become the leading Java™ Platform as a Service (PaaS) ● CloudBees services the complete lifecycle of Cloud application development and deployment. Strategy ● Focus on Applications ● Transparent management of servers, VMs and IT. DEV@cloud: Cloud Services for Developers Why we're different RUN@cloud: Frictionless runtime PaaS for Java apps
  • 15. CloudBees PaaS Continuous Development - Continuous Deployment Code Build Test Stage Deploy Manage DEV@cloud Repositories Jenkins MySQL Java EE 6 WP Core Services Scalability Availability Reliability Monitoring Alerting Billing Deployment Manager ©2011 CloudBees, Inc. All Rights Reserved
  • 17. Grails cloud-bees Plugin ● Provides CloudBees SDK with no installation ● Handy CLI scripts from within Grails project ● Allow for interaction with Apps and DBs ● All provided scripts can be called from within a Jenkins build! ©2011 CloudBees, Inc. All Rights Reserved
  • 18. Grails cloud-bees Plugin Applications can be Deployed and Deleted: grails bees-app-deploy grails bees-app-delete Applications can be Interrogated: grails bees-app-info grails bees-app-list Applications can be Controlled: grails bees-app-start grails bees-app-stop grails bees-app-restart ©2011 CloudBees, Inc. All Rights Reserved
  • 19. Grails cloud-bees Plugin Application logs tailed in real time! grails bees-app-tail Dec 5, 2011 3:30:42 PM com.staxnet.appserver.utils.AppServerConfiguration readAppServerConfig INFO: loading app config: /var/staxapps/8995/appserver.xml Dec 5, 2011 3:30:42 PM com.staxnet.appserver.TomcatServerBase initConfiguration INFO: Creating Tomcat server configuration at /var/staxapps/8995/staxcat/work Dec 5, 2011 3:30:42 PM net.stax.appserver.admin.AdminEngine createAdminHttpConnector INFO: Initializing admin-http-connector protocol: org.apache.coyote.http11.Http11Protocol Dec 5, 2011 3:30:43 PM net.stax.appserver.webapp.WebAppEngine createWebContexts INFO: loading app [] from /var/staxapps/8995/staxcat/install/webapp.war Dec 5, 2011 3:30:43 PM net.stax.appserver.webapp.WebAppEngine ... ©2011 CloudBees, Inc. All Rights Reserved
  • 20. Grails cloud-bees Plugin Databases can be Provisioned and Deleted: grails bees-db-create grails bees-db-delete Databases can be Interrogated: grails bees-db-info grails bees-db-list ©2011 CloudBees, Inc. All Rights Reserved
  • 21. Grails cloud-bees Plugin Demo! ©2011 CloudBees, Inc. All Rights Reserved
  • 22. Deploying the Beeline Setup ● Open your CloudBees account. ● Add config to: $HOME/.grails/settings.groovy cloudbees.account = 'ACCOUNT' cloudbees.api.key = 'KEY' cloudbees.api.secret = 'SECRET' The Project Clone the project from GitHub: git clone git@github.com:marcoVermeulen/beeline.git ©2011 CloudBees, Inc. All Rights Reserved
  • 23. Deploying the Beeline The Plugin grails install-plugin cloud-bees Resolving plugin cloud-bees. Please wait... ... Plugin cloud-bees-0.5 installed Plugin provides the following new scripts: ------------------------------------------ grails bees-app-stop grails bees-app-list grails bees-app-restart grails bees-app-delete grails bees-db-info grails bees-app-start grails bees-test-app grails bees-app-checksums grails bees-db-create grails bees-app-tail grails bees-db-delete grails bees-app-deploy grails bees-app-info grails bees-db-list ©2011 CloudBees, Inc. All Rights Reserved
  • 24. Deploying the Beeline Create a Database in the Cloud! grails bees-db-create Database created successfully. Database ID : beelinez grails bees-db-info Database Name : beelinez created : Wed Dec 07 23:10:57 GMT 2011 owner : hashcode username : beelinez password : changeme! master : ec2-174-129-9-255.compute-1.amazonaws.com port : 3306 slaves : [] status : active Also gives a handy datasource definition to copy and paste into your DataSource.groovy file!!! ©2011 CloudBees, Inc. All Rights Reserved
  • 25. Deploying the Beeline To the Cloud we go! grails bees-app-deploy Preparing the BeesClient ... Deploying hashcode/beeline tagged at version 0.1 ........................uploaded 25% ........................uploaded 50% ........................uploaded 75% ........................upload completed deploying application to server(s)... Application uploaded successfully to: http://beeline.hashcode.cloudbees.net That's all there is to it! ©2011 CloudBees, Inc. All Rights Reserved
  • 26. Grails cloud-bees Plugin Q&A ©2011 CloudBees, Inc. All Rights Reserved