CI/CD pipeline
Pull request → tests → build → registry → staging → manual approve → prod.
Rendering…
Make it your own.
{
"nodes": [
{ "id":"pr","type":"stadium","label":"Pull request","x":40,"y":160,"fill":"#dbeafe","stroke":"#2563eb" },
{ "id":"ln","type":"rect","label":"Lint","x":220,"y":80,"fill":"#ede9fe","stroke":"#6d28d9" },
{ "id":"tt","type":"rect","label":"Unit tests","x":220,"y":160,"fill":"#ede9fe","stroke":"#6d28d9" },
{ "id":"e2e","type":"rect","label":"E2E tests","x":220,"y":240,"fill":"#ede9fe","stroke":"#6d28d9" },
{ "id":"bd","type":"hexagon","label":"Build image","x":420,"y":160,"fill":"#fed7aa","stroke":"#c2410c" },
{ "id":"reg","type":"cylinder","label":"Container registry","x":620,"y":160,"fill":"#fef3c7","stroke":"#a16207" },
{ "id":"st","type":"cloud","label":"Staging","x":820,"y":80,"fill":"#e0f2fe","stroke":"#0369a1" },
{ "id":"ap","type":"diamond","label":"Approve?","x":820,"y":240,"fill":"#fef3c7","stroke":"#a16207" },
{ "id":"pd","type":"cloud","label":"Production","x":1040,"y":160,"fill":"#dcfce7","stroke":"#15803d" },
{ "id":"rb","type":"callout","label":"Rollback if SLO breach","x":1040,"y":340,"fill":"#fef9c3" }
],
"edges": [
{ "id":"e1","source":"pr","target":"ln" },
{ "id":"e2","source":"pr","target":"tt" },
{ "id":"e3","source":"pr","target":"e2e" },
{ "id":"e4","source":"ln","target":"bd" },
{ "id":"e5","source":"tt","target":"bd" },
{ "id":"e6","source":"e2e","target":"bd" },
{ "id":"e7","source":"bd","target":"reg" },
{ "id":"e8","source":"reg","target":"st","label":"deploy" },
{ "id":"e9","source":"st","target":"ap","label":"smoke OK" },
{ "id":"e10","source":"ap","target":"pd","label":"yes" },
{ "id":"e11","source":"rb","target":"pd" }
]
}