seminar continuous delivery 19092013
DESCRIPTION
Continuous Delivery explained using Jenkins, Deployit and XL releaseTRANSCRIPT
Continuous IntegrationContinuous Deployment
practical case
Agenda
1. Definitions2. Continuous Integration: Jenkins3. Monitoring4. Automated Testing5. Automated Deployments: Deployit6. Release Management: XL release7. Frameworks and tools8. Demo
Definitions
Source Control
Automated build
Continuous integration
Automated Testing
Automated Deployments
Continuous Delivery
Automated Provisioning
Definitions
Definitions● Continuous Integration:
Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly.Reference: Martin Fowler http://www.martinfowler.com/articles/continuousIntegration.html
● Continuous Deployment:The art of continuous putting new features to live systems, so they can be used by other people (internal or external). Ideally this is done in an automated way, and build on the continuous integration part.
● Continuous Delivery:Techniques such as automated testing, continuous integration and continuous deployment allow software to be developed to a high standard and easily packaged and deployed to (test) environments, resulting in the ability to rapidly, reliably and repeatedly push out enhancements and bug fixes to customers at low risk and with minimal manual overhead.Reference: wikipedia
Continuous Integration: Jenkins?What is it?
In a nutshell Jenkins CI is the leading open-source continuous integration server. Built with Java, it provides over 400 plugins to support building and testing virtually any project.
Checkout:http://jenkins-ci.org/
Jenkins example architecture
Jenkins: master / slaves
Jenkins SlaveJenkins Slave
Jenkins Master Build
CI
Jenkins Slave
Jenkins SlaveJenkins SlaveJenkins Slave
● 1 server is not enough.● Example: bol.com has around 800 jobs.● OS specific jobs.● Virtualize your CI environment → Allows for auto scaling your CI.
Jenkins: plugins
● Build flow plugin● Deployit jenkins plugin● Analysis Collector Plugin● Groovy postbuild plugin● Wall Display plugin● Email ext plugin● Twitter plugin
Monitoring
Automated testing: Fitnesse
Automated Deployments: Deployit
Automated Deployments: Deployit
Automated Deployments: Deployit
Jenkins Deployit plugin
Jenkins Deployit plugin
Release Management: XL release
● “XL release is the most advanced enterprise release coordination software solution.
● XL release allows you to plan, execute and track your application delivery process from code drop to customer.
● It provides the end-to-end automation and visibility you need to accelerate and improve your software delivery process.”
Release Management: XL release
Release Management: XL release
Frameworks
Tools● Agile Management: Jira, Trello, Excel● Continuous Integration: Jenkins, Bamboo, Hudson, Microsoft TFS● Testing: JUnit, FitNesse, Xebium, Cucumber, DBUnit, TestNG,
Greenpepper, JBehave, Twist, Jacoco, Arquillian, ...● Automated Deployment: Deployit, XL release, Nolio, uDeploy
● Collaboration: Confluence, xWiki, Google Drive● Automated Provisioning: Puppet, Chef, Vagrant, MCollective● Quality: Sonar● Build tools: ant, ivy, maven, gradle, Microsoft TFS● Source safety: subversion, git, Microsoft TFS● Monitoring: Nagios, Graphite, Splunk (Storm), Logstash, Graylog2 (Torch)● Cloud solutions
○ Continuous Integration: Cloudbees○ Public PAAS: Heroku, OpenShift, Azure○ Issue Management: Atlassian (Jira), Trello○ Don't forget Amazon
Demo
Questions