Continuous Integration (CI) and Continuous Delivery (CD): A Practical Guide to Designing and Developing Pipelines

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Use continuous Integration (CI) and continuous delivery (CD) to improve the speed of software delivery. This book presents a game changer―how to use pipelines to automate the software delivery process. The theories about CI/CD are much the same, but the book covers what the development of pipelines looks like and how testing of pipelines themselves should be performed.

Most teams just plunge into coding, without thinking about the CI/CD process itself. Why don’t we use the same development method for pipelines that we use for apps?

Pipelines code development undergoes similar stages as application code development, such as requirements analysis, development, testing, implementation, operations, and monitoring. This is the starting point of the book. It describes the current challenges with pipeline development and how this process can be improved and structured. It describes in detail how to design pipelines and shows examples in BPMN 2.0 notation.


What You’ll Learn

  • Know the shortcomings and challenges of current pipeline development such as misalignment between the pipeline engineer and the team’s workflow, the use of infrastructure as code (IaC), and pipeline security
  • Understand the need for CI/CD requirements through the book's non-exhaustive list of more than 60 CI/CD requirements provided to inspire and increase awareness
  • See how certain choices affect the way a pipeline is designed (and realized)
  • Become familiar with branching strategy, build strategy, test strategy, release strategy, and deployment strategy that are explained in detail in the book, including their effect on pipeline design
  • Know how pipelines can be unit tested, using a real-world example
  • Know how performance bottlenecks in a pipeline occur, how they can be detected, and how they can be solved
  • View a complete implementation, including code, showing how the guidelines in this book are applied to a real use case


Who This Book Is For

DevOps engineers and solution architects involved with automating the software supply chain and using application lifecycle management (ALM)/integration platforms such as Jenkins, CircleCI, Bamboo, and Azure DevOps; intermediate and experienced DevOps engineers (developers, ops engineers, test engineers); and ICT managers interested in the CI/CD pipeline development domain

Author(s): Henry van Merode
Edition: 1
Publisher: Apress
Year: 2023

Language: English
Commentary: NOTE: CI/CD is considered as "Software Engineering" which is well represented in LCC and UDC but not in DDC and LBC in which cases they are treated just as "Programming".
Pages: 435
City: Berkeley, CA
Tags: Continuous Integration; Continuous Delivery; CI/CD Design; CI/CD Requirements; Testing Pipelines; DevOps; DevOps Assembly Line; CI/CD Security Measures; CI/CD Pipeline Constructs; CI/CD Blueprint; Azure

Table of Contents
About the Author
About the Technical Reviewers
Acknowledgments
Chapter 1: The Pitfalls of CI/CD
Challenges
Oversimplified Diagrams and Misalignment
Lack of Design Patterns
Vulnerabilities
Pipeline Testing
Application Code vs. Infrastructure Code
Organizing and Maintaining Pipelines
Technical Constraints
Legacy
Summary
Chapter 2: CI/CD Concepts
Principles
Positioning of CI/CD
Application Lifecycle Management
CI/CD Journey
Naming Conventions
Summary
Chapter 3: Requirements Analysis
Overview
Way of Working
Technology
Information
Security (General)
Compliance and Auditability
Resource Constraints
Manageability
Operations
Quality Assurance
Metrics
Monitoring
Sustainability
Governance
Summary
Chapter 4: Pipeline Design
Design
CI/CD and Pipeline Design Approach
BPMN 2.0
BPMN Elements Overview
BPMN in Action
Level of Detail
Logical Design vs. Realization
The Generic CI/CD Pipeline
Validate Entry Criteria
Execute Build
Perform Unit Tests
Analyze Code
Package Artifact
Publish Artifact
Provision Test Environment
Deploy Artifact to Test
Perform Test
Validate Infrastructure Compliance
Validate Exit Criteria
Perform Dual Control
Provision Production Environment
Deploy Artifact to Production
Notify Actors
Design Strategies
Context Diagram
Branching Strategy
Trunk-Based Workflow
Feature Branch Workflow
Gitflow
Build Strategy
Vertical Scaling
Full Builds vs. Incremental Builds
Parallel Builds
Pipeline Caching
Build Targets
Cross-Platform Builds
Multiteam Build Strategy
Test Strategy
Automated vs. Manual Tests
Functional vs. Nonfunctional Tests
Parallel Execution vs. Sequential Execution
Manual Tests Performed by Specialists
Long Execution Time vs. Short Execution Time
Release Strategy
Road Map–Based Release
Timeboxed Release
Regular Release
Continuous Deployment
Feature Management–Based Release
Production Deployment Strategy
Re-create Deployment
Blue/Green Deployment
Rolling Update and Canary Deployment
A/B Test Strategy
Other Design Considerations
Delegation
Application Architecture
Orchestration
Event-Based CI/CD
Resource Constraints
Commercial Off the Shelf
Summary
Chapter 5: Pipeline Development
Pipeline Specification
Multibranch, Multistage Pipeline
User Interface–Based Pipelines
Scripted Pipelines
Declarative Pipelines
Constructs
Triggers
Execution Environment
Connections
Variables
Conditions
Caching
Matrix
Deployment Strategy
Auto-cancel
On Success/Failure
Fail Fast
Priority
Test Shards
Templates and Libraries
Gates and Approvals
Workflow
Plugins and Marketplace Solutions
Repositories: Everything as Code
Third-Party Libraries and Containers
Versioning and Tagging
Environment Repository
Secrets Management
Database Credentials
Feature Management
Development in the Value Streams
Simplified Pipeline Development
Extended Pipeline Development
Advanced Pipeline Development
Develop a Base Pipeline
Pipeline Generation
Pipeline of Pipelines (DevOps Assembly Line)
Sustainable Pipeline Development
Summary
Chapter 6: Testing Pipelines
Testing Pipelines
Testability of Pipelines
Unit Tests
Performance Tests
Pipeline Compliance and Security Tests
Acceptance Tests
Summary
Chapter 7: Pipeline Implementation
Pipeline Implementation
Organizational Impact
Team Discipline
Integration Platform
Target Environment Preparations
Playbook
Application Implementation
Runbook
Release Note
Artifact Promotion
Summary
Chapter 8: Operate and Monitor
Manage the Integration Platform
Operational Pipelines
Monitor
Systems Monitoring
Platform Monitoring
Business Monitoring
Security Monitoring
Share Information
Events, Alerts, Incidents, and Notifications
Summary
Chapter 9: Use Case
Requirements Analysis
Pipeline Design
Branching and Release Strategy
Release Version Generation
Pipeline Development
Code Repository
Pipeline Creation
Configure Variable Groups
Configure Service Connections
Test
Integrity of Artifacts
Performance and Acceptance Pipelines
Implementation
Configure the Azure DevOps Prod Environment and Dual Control
Deploy the Application to Production
Quality Gate
Summary
References
Index