How do you implement Continuous Delivery? Part 3: All about Pipelines

7,444 views

Published on

In Part 3 of our series on putting CD into practice, we explore setting up a pipeline for progressive testing and various pipeline design patterns.

Published in: Technology, Business
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
7,444
On SlideShare
0
From Embeds
0
Number of Embeds
1,860
Actions
Shares
0
Downloads
112
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

How do you implement Continuous Delivery? Part 3: All about Pipelines

  1. 1. How do you implement Continuous Delivery? Part 3: All about Pipelines
  2. 2. Pipeline for progressive testing
  3. 3. With CD, every build is a release candidatePipeline for progressive testing þ þý ý þ þ ý þ þ
  4. 4. The Testing Pyramid Pipeline for progressive testing Faster Feedback Broader Scope
  5. 5. The Testing Pyramid Pipeline for progressive testing The Delivery Pipeline Faster Feedback Broader Scope Faster Feedback Increasing Confidence
  6. 6. The system being developedPipeline for progressive testing Other Services Application A Application B
  7. 7. Pipeline for progressive testing Unit Tests Each unit test covers one app component Other components are stubbed
  8. 8. Pipeline for progressive testing The first stage of the pipeline runs the unit tests Unit Tests
  9. 9. Pipeline for progressive testing Integration Tests Integration tests cover a group of related components within the application
  10. 10. Pipeline for progressive testing Application Tests Application tests cover an application running in a container, mocking connections to other applications
  11. 11. Pipeline for progressive testing System Tests System tests cover the set of applications developed by the team, running together, mocking connections to external services
  12. 12. Pipeline for progressive testing System Integration Tests Systems integration tests exercise all parts of the system, including external dependencies
  13. 13. Pipeline Design Patterns
  14. 14. Pipeline Design Patterns Application Pipeline Automated tests Automated tests Automated tests Tested Build Manual tests Live Unattended Process One-click deployments Typical Pipeline Stages
  15. 15. Pipeline Design Patterns Typical Commit Stage Commit Stage 1.  Developer commits code to SCM Typical Pipeline Stages
  16. 16. Pipeline Design Patterns Typical Commit Stage Commit Stage 1.  Developer commits code to SCM 2.  Build server checks out & compiles code Typical Pipeline Stages
  17. 17. Pipeline Design Patterns Typical Commit Stage Commit Stage 1.  Developer commits code to SCM 2.  Build server checks out & compiles code 3.  Unit tests Typical Pipeline Stages
  18. 18. Pipeline Design Patterns Typical Commit Stage Commit Stage 1.  Developer commits code to SCM 2.  Build server checks out & compiles code 3.  Unit tests 4.  Code analysis Typical Pipeline Stages
  19. 19. Pipeline Design Patterns Typical Commit Stage Commit Stage 1.  Developer commits code to SCM 2.  Build server checks out & compiles code 3.  Unit tests 4.  Code analysis 5.  Create build artefact Typical Pipeline Stages
  20. 20. Pipeline Design Patterns Typical Deployment Testing Stage Deployment Testing Stage 1.  Prepare environment Typical Pipeline Stages
  21. 21. Pipeline Design Patterns Typical Deployment Testing Stage Deployment Testing Stage 1.  Prepare environment 2.  Retrieve artefact Typical Pipeline Stages
  22. 22. Pipeline Design Patterns Typical Deployment Testing Stage Deployment Testing Stage 1.  Prepare environment 2.  Retrieve artefact 3.  Deploy Typical Pipeline Stages
  23. 23. Pipeline Design Patterns Typical Deployment Testing Stage Deployment Testing Stage 1.  Prepare environment 2.  Retrieve artefact 3.  Deploy 4.  Smoke Test
  24. 24. Pipeline Design Patterns Typical Deployment Testing Stage Deployment Testing Stage 1.  Prepare environment 2.  Retrieve artefact 3.  Deploy 4.  Smoke Test 5.  Automated UI tests Typical Pipeline Stages
  25. 25. Pipeline Design Patterns Other pipeline stages q  Performance testing q  Security testing q  Exploratory testing q  User acceptance testing Typical Pipeline Stages
  26. 26. Best practices for pipeline stages Keep everything in source control Only build artefacts once Replicate production constraints Deploy the same way every time Pipeline Design Patterns Typical Pipeline Stages Keep it simple, implement only those stages that make sense for your system
  27. 27. Pipeline Design Patterns Build Progression þ þ þr101 Typical Pipeline Stages Pipeline Progression
  28. 28. Pipeline Design Patterns Build Progression þ þ þr101 ý If tests fail, work stops until the issue is resolved Typical Pipeline Stages Pipeline Progression
  29. 29. Pipeline Design Patterns Build Progression þ þ þr101 ý The fix is committed, and a new build goes through the pipeline from the beginning þ þr102 þ þ Typical Pipeline Stages Pipeline Progression
  30. 30. Pipeline Design Patterns Build Progression þ þ þr101 ý Multiple builds may go through test without being deployed to production þ þr102 þ þ þ þr103 þ þ Typical Pipeline Stages Pipeline Progression
  31. 31. Pipeline Design Patterns Build Progression þ þ þr101 ý Deployment to Production þ þr102 þ þ þ þr103 þ þ þ þr104 þ þ þ þ Typical Pipeline Stages Pipeline Progression
  32. 32. Joining multiple applications Pipeline Design Patterns Application A Application B Typical Pipeline Stages Pipeline Progression Joining multiple applications
  33. 33. Pipeline Design Patterns Application A Application B Application Testing Complete Application Testing Complete Joining multiple applications Typical Pipeline Stages Pipeline Progression Joining multiple applications
  34. 34. Pipeline Design Patterns Application A Application B Application Testing Complete Application Testing Complete Integration Testing Joining multiple applications If tests fail for application A, application B can still proceed using the last “good” version of A Typical Pipeline Stages Pipeline Progression Joining multiple applications LIVE
  35. 35. Pipeline Design Patterns Provider Consumer Federated Pipelines Pre-release testing Typical Pipeline Stages Pipeline Progression Joining multiple applications Provider team could host instances for testing…
  36. 36. Pipeline Design Patterns Provider Consumer Federated Pipelines Pre-release testing LIVE Consumer contract tests …or provide packages for deployment by the Consumer teamTypical Pipeline Stages Pipeline Progression Joining multiple applications Provider team could host instances for testing…
  37. 37. Automated Testing Stay tuned for Part 4…
  38. 38. Deploy a great product faster. Agile teams deliver working software early and often. Go automates and streamlines the build-test-release cycle for worry-free, continuous delivery of your product. Learn More See how Go can help you in your CD journeygo Continuous Delivery

×