4.8 KiB
Skill: pipeline-tracer
One-line description: Given a service's config.yaml and a branch/trigger context, trace the complete execution path through devops-lib — every stage, every decision point, every policy check — and output a human-readable flow with the exact code locations driving each step.
Owner: DevOps Platform team
Why this skill exists
devops-lib's pipeline is a routing tree, not a linear script. A single eksCICD call dispatches to different stages based on build_tool, takes different paths based on env.BRANCH_NAME and PR target, checks multiple whitelists, conditionally runs sonar, CAC validation, ArgoCD sync, and sends different notifications depending on the environment. The full execution path for a given service in a given context spans 15+ files.
No one has a complete mental model of this tree for every service type. Consequences:
- Engineers add a whitelist exception but don't know which of the 3 sonar-skip checks it actually bypasses
- Reviewers approve a stage change without knowing it only runs in
prd(notstg) - New team members spend days understanding why their build skips certain stages
- Debugging requires mentally simulating the entire dispatch chain from
eksCICD.groovydown
This skill is the complement to library-impact-analyzer: impact-analyzer answers "what does a code change affect?" — pipeline-tracer answers "for this specific service in this specific context, what exact path does the code take?"
Trigger
"trace pipeline for payment-service on develop branch""what stages run for a hotfix build of catalog-service?""why is sonar being skipped for auth-service?""show me the full pipeline path for a PR from feature/x to main in supply-chain-service"- Proactively: attached to
service-onboarderoutput — show the new service's expected pipeline before its first build
Input
- A service
config.yaml(file path or pasted content) — providesbuild_tool,team,bu,skip_sonar,deployArgo,deployment_order, etc. - A trigger context: branch name (
develop,main,hotfix/x,feature/y) and optionally a PR target (mainordevelop)
Expected output
Given: config.yaml for payment-service (build_tool: maven, bu: supply), branch: develop
Pipeline Trace — payment-service | branch: develop | env: stg
Entry point: vars/eksCICD.groovy
Trigger check: PASS — develop branch, no PR target → env = stg
Pod selection: resources/org/meesho/stg-pod.yaml
image: build-tools:lunar-v2.0.21
node pool: supply-shared (BU-scoped stg pool)
Build stage: src/com/meesho/stages/buildMaven.groovy
build_tool 'maven' → buildObjHelper → buildMaven
Config-only change check: RUNS (skips build if only *.yaml changed)
Docker image: stg/payments/payment-service:<sha>
Policy checks:
skip_sonar: false → sonar WILL run
skip-sonar-whitelist: payment-service NOT on list → sonar runs
CAC validation: payment-service on ValidateCacConfig whitelist → RUNS
appConfigEnabled: true → AppConfig validation RUNS
multizone: payment-service NOT on multizone list → deploy proceeds normally
ArgoCD deploy:
deployArgo: true → WILL deploy
deployment_order: [payment-service]
4-step sequence: update_argo_repo → refresh_app_of_apps → update_helm_repo → refresh_and_sync
ArgoCD app: payment-service-stg
Notification:
notify_channel: #payments-alerts
Ringmaster callback: NO (stg build, not prd)
Turbo-Turtle callback: YES (stg deploy confirmation)
Total stages: 7 | Estimated duration: 12–18 min
Dependencies
- Full read access to devops-lib source (the skill builds a live call graph from the source)
Meesho/whitelistsread access (to check live whitelist membership for the specific service)src/com/meesho/utilities/buTeamMapping.groovy(for node pool selection)resources/org/meesho/*.yaml(for pod spec and image resolution)
Design notes
The skill must understand the devops-lib environment mapping table precisely:
| Branch | PR target | cicd_environment |
|---|---|---|
main/master/gcp-main |
— | prd |
develop |
— | stg |
| any | main |
int |
| any | develop |
ftr |
hotfix/* |
— | prd (sonar + tests skipped) |
And must correctly simulate the hotfix path (sonar skipped, quality gate skipped, no CAC validation) vs the standard path.
Open questions
- Should the trace show actual code line numbers for each decision, or just method names?
- For
intandftrenvironments where ArgoCD deploy is often skipped: should it explain why? - Should it compare two contexts side-by-side (e.g., "what's different between develop and hotfix builds for this service")?
- Could this skill power an interactive pipeline visualiser (Mermaid diagram output)?