• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Automation and the Deployment Pipeline
 

Automation and the Deployment Pipeline

on

  • 3,919 views

This is the deck for a [number of] talks I do on Continuous Delivery and where automation fits into each step of getting code out of a product owner's imagination and into the hands of eager users.

This is the deck for a [number of] talks I do on Continuous Delivery and where automation fits into each step of getting code out of a product owner's imagination and into the hands of eager users.

Statistics

Views

Total Views
3,919
Views on SlideShare
2,911
Embed Views
1,008

Actions

Likes
0
Downloads
29
Comments
1

5 Embeds 1,008

http://element34.ca 1001
http://feeds.feedburner.com 2
http://www.slideshare.net 2
http://sunproxy1.appspot.com 2
url_unknown 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • Some more DevOps for websphere:
    http://blog.noliosoft.com/websphere-it-teams-now-join-the-devops-movement/
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Automation and the Deployment Pipeline Automation and the Deployment Pipeline Presentation Transcript

    • Automation & the Deployment Pipeline Adam Goucher @adamgoucher adam@element34.caThis workshop is about the various forms of automation that happens in the Deployment Pipeline.On this slide we talk about:- The Going Camping Heuristicphoto credit: http://www.flickr.com/photos/nataliejohnson/2763306217/
    • End-user PerspectiveFrom the end-user perspective, your application just delivers its <thing> to them.photo credit: http://www.flickr.com/photos/auntlaura/4806934654/
    • RealityWe know that the reality is slightly different. But even this is well organized and logical -- if you understand the system.photo credit: http://www.flickr.com/photos/incandopolis/2867941478/
    • An Ethical DistinctionOn this slide we talk about:- Continuous Delivery vs Continuous Deploymenthttp://www.flickr.com/photos/8840244@N04/3644022974/
    • The Lightsaber HeuristicThere are commercial tools available to do all this stuff. Instead, we’ll use all open-source tools to build a custom solution.On this slide we talk about:- The Lightsaber Heuristicphoto credit: http://www.flickr.com/photos/pasukaru76/3694179131/
    • Lots of parts, working togetherTo have a fully automated deployment pipeline, there are /lots/ of moving parts. The big ones are- acceptance criteria- configuration management- continuous integration- data migration- deployment- functional test automation- immunization systems.We will be talking about each of thesephoto credit: http://www.flickr.com/photos/19779889@N00/4398186065/
    • The best way to illustrate all these things is to do them live. As a result, we will create a Ruby-on-Rails application and have push it through eachpart of the Deployment Pipeline. Both the application and all the pipeline support code will be made available shortly after the workshop.
    • SpecificationsIt can be argued when the Pipeline really starts. So lets start from the beginning; with acceptance criteria.On this slide we talk about:- Specification Workshops- Given / When / ThenI’m not a fan of any of the current BDD/ATDD tools from an automation perspective, but going through the exercise of producing thespecifications absolutely has merit.photo credit: http://www.flickr.com/photos/wallyhartshorn/2680766935/
    • Manual InspectionFor our purposes though, the automation part begins when someone inspects their change as to whether it is time to Commit.photo credit: http://www.flickr.com/photos/mooney77/229524092/
    • CommitThere is one path through the pipeline and our Commit starts it.On this slide we talk about:- Check-in vs. Commit- Clean vs. dirty trunk- Pre-Commit checks- Commit checks- Post-Commit checksphoto credit: http://www.flickr.com/photos/jkgroove/119112238/
    • ‘Cans’Once our code is versioned, we need to have machines to run our checks against.On this slide we talk about:- Machines as ‘cans’photo credit: http://www.flickr.com/photos/neonman/1438473495/
    • PuppetPuppetOn this slide we talk about:- Puppet vs. Chef vs. Cfengine- What Configuration Management is.... and isn’tAnd we provision our server, demonstrating how Puppet controls- packages- services- users/groupsphoto credit: http://www.flickr.com/photos/sukigirl74/2716951216/
    • Continuous IntegrationWith a machine to run things again, we now turn our attention to the control center of the whole Pipeline; the Continuous Integration server.photo credit: http://www.flickr.com/photos/clintjcl/2847746499/
    • JenkinsJenkins (part one)On this slide we talk about:- Role of CI- Jenkins vs. HudsonAnd we configure Jenkins for our application, demonstrating- Jobs- Job chains- Authentication- Remote agents- Reporting- Notifications- Plugins
    • Data MigrationData Migration is tricky. To say the least. But getting it right is critical to getting your pipeline fully automatedOn this slide we talk about:- Up- Down- IdempotencyBecause we’re using Ruby-on-Rails, we’ll use ActiveRecord Migrations for our pipeline but we’ll also look at dbdeployphoto credit: http://www.flickr.com/photos/theclyde/1663944456/
    • DeploymentCompared to everything else before now, pushing the code out onto the server(s) is a snap.On this slide we talk about:- Zero-downtime deploys- RollbacksMost ‘platforms’ have a deployment tool that has grown with it. For our deployments, we’ll be using Capistrano. Cap is not limited to just Ruby-on-Rails deployments though so we’ll talk about how to customize it for a number of different scenarios.photo credit: http://www.flickr.com/photos/mybloodyself/464597917/
    • Functional AutomationSo we’re finally at the point where we can do some ‘traditional’ automation. And since our stack is all Open Source, we’re going to use Selenium.photo credit: http://www.flickr.com/photos/kwc/1866220494
    • Papers pleaseUniquely identifying things on the page is one of the hardest parts about doing web automation. And is one of the main reasons scripts are‘brittle.’On this slide we talk about:- attribute-based locators- structural locators- when to use which locatorphoto credit: http://www.flickr.com/photos/michaelimage/2843233811/
    • SynchronizationThe other common pain point for web automation is synchronizing the script steps with the applicationOn this slide we talk about:- Web 1.0- Web 2.0- Web 2.0++photo credit: http://www.flickr.com/photos/bfauld1/121955292/
    • RandomnessIntroducing randomness into your scripts is important -- use it!On this slide we talk about:- Providers- Oraclesphoto credit: http://www.flickr.com/photos/richardsummers/195510085/
    • Pesticide ParadoxImagine you are a farmer...On this slide we talk about:- The Pesticide Paradoxphoto credit: http://www.flickr.com/photos/gregoryjordan/4735058616/
    • Land mine problemYou should find the mines.Not.Your.Customer.On this slide we talk about:- The Land Mine Problem- Continuous Delivery vs. Continuous Deploymentphoto credit: http://www.flickr.com/photos/d-minor/120407151/
    • TagsManual built suites of scripts is a code smellOn this slide we talk about:- Tags- Tag taxonomies- Script discovery- Parallel execution- Random executionphoto credit: http://www.flickr.com/photos/thingsarebetterwithaparrott/1437904057/
    • Page ObjectsPage Objects bring the power of OO to automationOn this slide we talk about:- Page ObjectsFor our project, we will construct some Page Object based Selenium scripts using RSpec. Though we can discuss and/or create examples of themin other languages too.photo credit: http://www.flickr.com/photos/dmclean/2472399095/
    • Jenkins (Redux)Jenkins (again)On this slide we talk about:- Using Jenkins as a replacement for se-grid- Advanced job chaining
    • Immunization SystemsImmunizations shots keep you healthy. Immunization systems keep your deployments healthy.On this slide we talk about:- Immunization Systems- Business vs. Technical metrics- Incremental deployments- Automated rollbackIn order to ensure our deployment will not negatively impact our users, we will build a basic Immunization System for our application. By theirnature, these are highly customized per application.photo credit: http://www.flickr.com/photos/irenemiranda/4683185743/
    • G-ForcesKent Beck uses the notion of G-Forces to explain how things respond to speeding up your process. With a fully automated deployment pipelinethings will be able to go faster. And faster.But you could also get thrown from the carousel, so be careful.On this slide we talk about:- Kent Beck’s G-Forcesphoto credit: http://www.flickr.com/photos/areyoumyrik/308908736/
    • Adam Goucher @adamgoucher adam@element34.caphoto credit: http://www.flickr.com/photos/teimoury/2431264409/