Unit 4: Core concepts of Continuous Delivery (CD), Deployment & Automation
The unit builds on Continuous Integration and extends the pipeline outward: from validated artifacts, through automated provisioning and configuration, to running workloads in production. Every later section assumes the same pipeline spine — commit, build, test, package, deploy — and the goal of shrinking lead time while keeping releases low-risk and repeatable.
- Deployment pipeline: the automated path an artifact travels from version control to production; each stage is a gate that must pass before the next runs.
- Idempotency: applying the same operation many times yields the same end state; the governing property of configuration management and infrastructure tools.
- Immutability: servers/containers are replaced rather than modified in place, eliminating configuration drift.
- Declarative vs imperative: describe the desired end state (declarative) versus scripting the steps to reach it (imperative).
- Artifact: the single, versioned, tested build promoted unchanged through every environment.
II. Continuous Delivery & Continuous Deployment
Two release disciplines that differ only at the production gate.
A. Introduction to Continuous Delivery & Continuous Deployment
Both practices automate everything up to release; they differ in whether a human approves the final push.
- Continuous Delivery: every change that passes the pipeline is deployable to production, but the actual release is triggered manually.
- Trigger: a person clicks "promote"; the build is already staging-verified.
- Use case: regulated domains needing a sign-off (banking, healthcare).
- Continuous Deployment: every change that passes automated tests is released to production automatically, with no human step.
- Trigger: a green pipeline is the release; no gate.
- Precondition: high automated test coverage and reliable rollback.
- Shared foundation: both require Continuous Integration, automated tests, one artifact promoted across environments, and infrastructure defined as code.
- Metrics: measured by deployment frequency, lead time for change, mean time to recovery (MTTR), and change-failure rate.
III. Jenkins Plugins for CD
Extending Jenkins from a build server into a delivery orchestrator.
A. Jenkins Plugins for CD
Jenkins ships a minimal core; delivery capability comes from plugins layered onto pipelines.
- Pipeline (Workflow) plugin: defines the build as code in a
Jenkinsfileusing Groovy stages.
GROOVYpipeline { agent any stages { stage('Build') { steps { sh 'mvn package' } } stage('Test') { steps { sh 'mvn test' } } stage('Deploy') { steps { sh './deploy.sh' } } } } - Blue Ocean: graphical visualization of pipeline stages and their pass/fail state.
- Credentials Binding: injects secrets (tokens, keys) into builds without hardcoding them.
- Docker Pipeline: builds, tags, and pushes images and runs steps inside containers.
- Kubernetes plugin: spins up ephemeral build agents as pods on demand.
- SSH / Publish Over SSH: copies artifacts and runs remote deploy commands on target hosts.
- stage-gate plugins (input step): the
inputdirective pauses for manual approval — the mechanism that turns Continuous Deployment into Continuous Delivery.
IV. Deployment Strategies
Techniques for replacing a running version while controlling downtime and blast radius.
A. Rolling
Instances are upgraded in batches so the service never fully stops.
- Mechanism: replace a subset (e.g. 2 of 6 nodes) with the new version, health-check, then proceed to the next subset.
- Trade-off: no extra capacity cost, but old and new versions run simultaneously, so both must be backward-compatible.
- Rollback: slow — the batch process must be reversed instance by instance.
B. Blue-Green
Two identical environments exist; traffic switches between them instantly.
- Mechanism: "blue" serves live traffic while "green" holds the new version; a load-balancer or DNS switch cuts all traffic to green at once.
- Rollback: near-instant — flip traffic back to blue.
- Trade-off: requires double the infrastructure during the switchover; database schema changes need care since both share data.
C. Canary
A small slice of real traffic tests the new version before full rollout.
- Mechanism: route ~5% of users to the canary; monitor error rate and latency; increase gradually to 100% or abort.
- Advantage: limits blast radius to a fraction of users and validates against real load.
- Contrast with Blue-Green: blue-green switches all traffic in one step; canary ramps traffic progressively, trading speed for safety.
V. Configuration Management Basics: Terraform / Puppet / Ansible
Codifying servers and infrastructure so environments are reproducible.
A. Terraform
A declarative tool for provisioning infrastructure (the machines themselves).
- Scope: creates and destroys cloud resources — VMs, networks, load balancers.
- State file:
terraform.tfstaterecords what exists so plans compute only the delta. - Workflow:
terraform init→plan(preview) →apply(execute).
HCLresource "aws_instance" "web" { ami = "ami-0abcd1234" instance_type = "t2.micro" }
B. Puppet
A declarative, agent-based tool for configuring the software on servers.
- Model: agents pull the desired state (manifests) from a central Puppet master at intervals.
- Language: manifests describe resources; Puppet enforces them idempotently.
PUPPETpackage { 'nginx': ensure => installed } service { 'nginx': ensure => running } - Contrast with Ansible: Puppet is pull-based and needs an agent installed; Ansible is push-based and agentless.
C. Ansible
An agentless, procedural tool that configures hosts over SSH.
- Transport: connects via SSH; no software on targets beyond Python.
- Playbooks: YAML files listing ordered tasks against inventory groups.
- Idempotency: modules (e.g.
apt,service) only change state when needed.
VI. Infrastructure Automation with Ansible and Terraform
Combining a provisioner and a configurer into one automated flow.
A. Infrastructure Automation with Ansible and Terraform
The two tools are complementary rather than competing: Terraform builds the infrastructure, Ansible configures what runs on it.
- Terraform's role — provisioning: stands up the raw resources (instances, subnets, security groups) declaratively and tracks them in state.
- Ansible's role — configuration: installs packages, writes config files, and starts services on the provisioned hosts.
- Handoff: Terraform outputs host IPs; Ansible consumes them as inventory, so a single run goes from empty cloud account to a working, configured application.
- Ansible playbook example:
YAML- hosts: web tasks: - name: Install nginx apt: { name: nginx, state: present } - name: Start nginx service: { name: nginx, state: started } - Benefit: the entire environment is version-controlled, reviewable, and reproducible — supporting immutable, drift-free infrastructure.
VII. Containerization and Docker
Packaging an application with its dependencies into a portable, isolated unit.
A. Containerization Introduction
Containers isolate a process and its dependencies while sharing the host kernel.
- Definition: OS-level virtualization bundling code, runtime, and libraries into one image.
- Contrast with virtual machines:
- VM: ships a full guest OS per instance; heavy, boots in minutes.
- Container: shares the host kernel; lightweight, starts in seconds.
- Value: "build once, run anywhere" — eliminates the "works on my machine" gap.
B. Docker Architecture & Workflow
Docker uses a client-server model to build and run containers.
- Docker client: the CLI (
docker) that sends commands. - Docker daemon (
dockerd): the server that builds images and runs containers. - Image: a read-only template built from layers.
- Container: a running, writable instance of an image.
- Registry: a store for images (Docker Hub, private registries).
- Workflow: write a
Dockerfile→docker buildproduces an image →docker pushto a registry →docker pullanddocker runon any host.
C. Writing Dockerfiles
A Dockerfile is a text recipe of ordered instructions that build an image.
FROM: the base image every layer sits on.WORKDIR: sets the working directory inside the image.COPY: copies files from build context into the image.RUN: executes a command at build time, creating a new layer.EXPOSE: documents the port the container listens on.CMD: the default command run when the container starts.
DOCKERFILEFROM node:18-alpine WORKDIR /app COPY package.json . RUN npm install COPY . . EXPOSE 3000 CMD ["node", "server.js"]- Layer caching: each instruction is a cached layer; copying
package.jsonbefore source code lets dependency installs be reused when only code changes.
D. Building Images
Building turns the Dockerfile and its context into a tagged, layered image.
- Command:
docker build -t myapp:1.0 .— the.is the build context sent to the daemon. - Tagging:
name:tagidentifies versions; untagged builds default tolatest. - Inspection:
docker imageslists built images with size and ID. - Optimization: multi-stage builds compile in one stage and copy only the artifact into a slim final image, cutting size.
E. Running Containers
Running instantiates an image as an isolated, live process.
- Command:
docker run -d -p 8080:3000 myapp:1.0.-d: detached (background) mode.-p 8080:3000: maps host port 8080 to container port 3000.
- Lifecycle:
docker pslists running containers;docker stop/docker startmanage state;docker logsreads output. - Persistence: container writes are ephemeral;
-v host:containermounts a volume to keep data across restarts.
Did this save you a night before the exam?
LPU Notes is free, and it stays free. Ads cover part of the server bill. The rest comes out of a student's own pocket: the domain, the storage, and keeping the site up through the weeks everyone needs it at once.
The payment button didn't load. An ad blocker or a filtered network is the usual reason. to try again.
Nothing here is ever locked, and nothing unlocks. Chip in only if it was worth it. What it pays for →