Your SlideShare is downloading. ×
How do you implement Continuous Delivery? Part 3: All about Pipelines
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

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

6,088
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.

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
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
6,088
On Slideshare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
89
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. How do you implement Continuous Delivery? Part 3: All about Pipelines
  • 2. Pipeline for progressive testing
  • 3. With CD, every build is a release candidatePipeline for progressive testing þ þý ý þ þ ý þ þ
  • 4. The Testing Pyramid Pipeline for progressive testing Faster Feedback Broader Scope
  • 5. The Testing Pyramid Pipeline for progressive testing The Delivery Pipeline Faster Feedback Broader Scope Faster Feedback Increasing Confidence
  • 6. The system being developedPipeline for progressive testing Other Services Application A Application B
  • 7. Pipeline for progressive testing Unit Tests Each unit test covers one app component Other components are stubbed
  • 8. Pipeline for progressive testing The first stage of the pipeline runs the unit tests Unit Tests
  • 9. Pipeline for progressive testing Integration Tests Integration tests cover a group of related components within the application
  • 10. Pipeline for progressive testing Application Tests Application tests cover an application running in a container, mocking connections to other applications
  • 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. Pipeline for progressive testing System Integration Tests Systems integration tests exercise all parts of the system, including external dependencies
  • 13. Pipeline Design Patterns
  • 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. Pipeline Design Patterns Typical Commit Stage Commit Stage 1.  Developer commits code to SCM Typical Pipeline Stages
  • 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. 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. 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. 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. Pipeline Design Patterns Typical Deployment Testing Stage Deployment Testing Stage 1.  Prepare environment Typical Pipeline Stages
  • 21. Pipeline Design Patterns Typical Deployment Testing Stage Deployment Testing Stage 1.  Prepare environment 2.  Retrieve artefact Typical Pipeline Stages
  • 22. Pipeline Design Patterns Typical Deployment Testing Stage Deployment Testing Stage 1.  Prepare environment 2.  Retrieve artefact 3.  Deploy Typical Pipeline Stages
  • 23. Pipeline Design Patterns Typical Deployment Testing Stage Deployment Testing Stage 1.  Prepare environment 2.  Retrieve artefact 3.  Deploy 4.  Smoke Test
  • 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. Pipeline Design Patterns Other pipeline stages q  Performance testing q  Security testing q  Exploratory testing q  User acceptance testing Typical Pipeline Stages
  • 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. Pipeline Design Patterns Build Progression þ þ þr101 Typical Pipeline Stages Pipeline Progression
  • 28. Pipeline Design Patterns Build Progression þ þ þr101 ý If tests fail, work stops until the issue is resolved Typical Pipeline Stages Pipeline Progression
  • 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. 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. Pipeline Design Patterns Build Progression þ þ þr101 ý Deployment to Production þ þr102 þ þ þ þr103 þ þ þ þr104 þ þ þ þ Typical Pipeline Stages Pipeline Progression
  • 32. Joining multiple applications Pipeline Design Patterns Application A Application B Typical Pipeline Stages Pipeline Progression Joining multiple applications
  • 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. 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. 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. 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. Automated Testing Stay tuned for Part 4…
  • 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