flowchart LR P["Plan"] --> C["Code"] --> B["Build"] --> T["Test"] --> R["Release"] R --> D["Deploy"] --> O["Operate"] --> M["Monitor"] M -- "feedback" --> P
| Stage | Activities | Example tools |
|---|---|---|
| Plan | Tasks, backlog, schedule | Jira, Azure Boards |
| Code | Version control, code review, code scanning | Git, GitHub/GitLab/Azure Repos, SonarQube |
| Build | Compile, package, store artifacts | Maven, npm, Docker, Nexus/Artifactory |
| Test | Unit, integration, quality gates | JUnit, Jest, Selenium |
| Release | Change management, release approval | Jenkins, Azure Pipelines (approvals) |
| Deploy | Provision infrastructure, deploy app, configure | Terraform, Ansible, Helm, kubectl |
| Operate | Run, HA, backups, logs, databases | Kubernetes, cloud services |
| Monitor | Performance, logs, incidents | Prometheus, Grafana, ELK |
- The toolchain is the chain of tools linking the stages: Plan, Code, Build, Source analysis, Test, Package, Deploy, Orchestration, Security, Operation, Monitor & analysis. Tools can change; the flow stays.
- Release ≠ Deploy: Release is the decision and change management (who approves, when); Deploy puts the build into an environment.
- Monitor closes the loop: metrics and incidents become input to the next Plan.
- Code review has levels: manual in the IDE and scripts at the low end; at the high end, CI/CD with automated quality gates (Jenkins + SonarQube…).
Before automating, check that the build agent has the tools it needs (Git, Docker, Java for Jenkins).
| Command | Meaning |
|---|---|
git --version |
Git version |
docker --version |
Docker client version |
java -version |
Java version (Jenkins needs Java) |
The infinity loop
The lifecycle is usually drawn as an infinity symbol: the left loop (Plan, Code, Build, Test) belongs mainly to development, the right loop (Release, Deploy, Operate, Monitor) mainly to operations, and the two meet without a hand-off wall. Each turn of the loop should be small, a few days or hours rather than months.
Feedback at every stage
| Stage | Feedback that flows back |
|---|---|
| Code | Review comments, static analysis results |
| Build and test | Failing tests, coverage, vulnerability reports within minutes |
| Deploy | Deployment success or rollback |
| Operate and monitor | Error rates, latency, user behaviour, incidents |
Fast feedback is the point of the whole loop: a bug found by a unit test minutes after a commit costs far less than one found by a customer.
Security across the loop (DevSecOps)
Security is not a stage at the end but a concern in every stage: threat modelling in Plan, secret scanning and SAST in Code, dependency scanning (SCA) and image scanning in Build, DAST in Test, policy checks in Deploy, runtime detection in Operate. The Security track later goes deeper into these tools.
Artifacts and environments
Two supporting pieces connect the stages:
- An artifact repository (Nexus, Artifactory, a container registry, Azure Artifacts) stores built packages with versions, so deployments pull an exact, tested build.
- Environment parity: dev, test, staging, and production should be as similar as possible, ideally created from the same infrastructure code, so a passing test means something in production.
Mapping this course to the loop
| Stage | Where you learn it |
|---|---|
| Code | Git module |
| Build, Test, Release | Jenkins and Azure DevOps modules |
| Deploy | Ansible, Terraform, Docker, Kubernetes, Helm |
| Operate, Monitor | Kubernetes operations, Prometheus and Grafana module |