This updated guide explains the SCM (Software Configuration Management) process and how to apply a practical smart build pattern in modern DevOps pipelines. It is for teams that want traceable code changes, safer merges, and faster builds by running only what matters.
Originally published on 2011-02-22; fully revised and updated.
Source attribution: original DevOpsSchool post, SCM Process and smartBuild by Rajesh Kumar.

SCM and smart build in a DevOps context
SCM is the discipline of controlling changes to source code, configuration, and release artifacts. In practice, teams combine SCM with CI/CD so every change is versioned, reviewed, built, tested, and auditable.
Because the original post is a slide-based overview, this revision uses a practical interpretation of smartBuild: a change-aware build approach that triggers only the builds and tests impacted by a commit.
- Track every change with commit history and tags.
- Enforce quality gates through review and CI checks.
- Reduce pipeline time with selective build/test execution.
- Publish immutable artifacts for reliable releases and rollback.
Reference SCM-to-build workflow
flowchart LR
A[Plan change] --> B[Create branch]
B --> C[Commit and push]
C --> D[Pull request review]
D --> E[Merge to main]
E --> F[CI detect changed paths]
F --> G[Run impacted builds and tests]
G --> H{Checks pass}
H -- no --> I[Fix and recommit]
H -- yes --> J[Publish artifact]
J --> K[Deploy and tag release]
SCM process stages and control points
| Stage | Main activity | Primary output | Typical control point |
|---|---|---|---|
| Baseline and planning | Define scope, branch strategy, naming rules | Working agreement | Team approval of workflow |
| Development | Implement changes in short-lived branches | Commits linked to work items | Pre-commit checks/linting |
| Integration | Open pull request and review | Reviewed merge | Required reviewers and status checks |
| Verification | Run CI builds and tests | Test reports and logs | Pass/fail quality gate |
| Release | Tag version and publish artifact | Versioned artifact | Release approval policy |
| Audit and recovery | Track provenance and rollback path | Traceability records | Retention and backup policy |
Choosing a collaboration model
| Model | Best for | Strength | Trade-off |
|---|---|---|---|
| Trunk-based development | High deployment frequency teams | Fast integration, fewer long-lived branches | Requires strong automated testing discipline |
| Feature branches with pull requests | Most product teams | Clear review flow and isolation per change | Can accumulate merge conflict risk if branches live too long |
| Release branches | Products with staged release windows | Stabilization before production cut | More branch management overhead |
Example implementation: Git plus change-aware build logic
Basic SCM flow with Git
git checkout -b feature/login-rate-limit
git add .
git commit -m 'Add rate limit middleware'
git push -u origin feature/login-rate-limit
# after review and merge
git tag -a v1.4.0 -m 'Release v1.4.0'
git push origin v1.4.0Code language: PHP (php)
Smart build script example (monorepo)
changed_paths=$(git diff --name-only origin/main...HEAD)
run_service_a=false
run_service_b=false
while IFS= read -r path; do
case $path in
service-a/*) run_service_a=true ;;
service-b/*) run_service_b=true ;;
shared/*) run_service_a=true; run_service_b=true ;;
esac
done <<< $changed_paths
$run_service_a && ./gradlew :service-a:test
$run_service_b && ./gradlew :service-b:testCode language: JavaScript (javascript)
Pipeline step that calls the smart build script
stages:
- test
smart_build_test:
stage: test
script:
- git fetch origin main
- ./ci/smart-build.sh
only:
- merge_requests
Adapt the pipeline syntax to your CI system, but keep the pattern: detect changes, map impact, run only required jobs, and enforce a quality gate before merge.
Best practices
- Keep branches short-lived and merge frequently to reduce conflict cost.
- Protect main branches with required reviews and CI checks.
- Version artifacts with tags so each deployment maps back to source.
- Start smart build rules simple (path-based), then evolve toward dependency-aware mapping.
- Log why a job was skipped or triggered so selective builds stay auditable.
I’m Rajesh Kumar, a DevOps, SRE, DevSecOps, Cloud, and Platform Engineering expert passionate about sharing practical knowledge, real-world experiences, and industry best practices. I have worked at Cotocus and regularly write about technology, travel, investing, health, product reviews, and digital marketing through my various platforms.
I publish technical articles at DevOps School, travel stories at Holiday Landmark, stock market insights at Stocks Mantra, health and fitness guidance at My Medic Plus, product reviews at TrueReviewNow, and SEO and digital marketing strategies at Wizbrand.
Find Trusted Cardiac Hospitals
Compare heart hospitals by city and services — all in one place.
Explore Hospitals