This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 1260" width="720" height="1260" role="img" aria-labelledby="title desc">
|
||||
<title id="title">Контракт минимального CI/CD pipeline</title>
|
||||
<desc id="desc">Вертикальная схема показывает путь от commit и lockfile через проверку и одну сборку к артефакту. Ручной deploy читает только артефакт и останавливается до доставки при несовпадении revision или checksum.</desc>
|
||||
<rect width="720" height="1260" fill="#0d1b2a" rx="28"/>
|
||||
<text x="56" y="72" fill="#f8fafc" font-family="Arial, sans-serif" font-size="34" font-weight="700">Минимальный pipeline</text>
|
||||
<text x="56" y="108" fill="#a5d8ff" font-family="Arial, sans-serif" font-size="22">один результат · одна точка остановки</text>
|
||||
|
||||
<rect x="48" y="148" width="624" height="132" rx="20" fill="#17324d" stroke="#4dabf7" stroke-width="2"/>
|
||||
<text x="80" y="194" fill="#93c5fd" font-family="Arial, sans-serif" font-size="22" font-weight="700">ВХОД</text>
|
||||
<text x="80" y="232" fill="#f8fafc" font-family="Arial, sans-serif" font-size="28" font-weight="700">commit + lockfile</text>
|
||||
<text x="80" y="262" fill="#cbd5e1" font-family="Arial, sans-serif" font-size="21">код и зафиксированные зависимости</text>
|
||||
|
||||
<path d="M360 290v42" stroke="#4dabf7" stroke-width="6" stroke-linecap="round"/>
|
||||
<path d="M346 320l14 16 14-16" fill="none" stroke="#4dabf7" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
|
||||
<rect x="48" y="350" width="624" height="148" rx="20" fill="#123b34" stroke="#51cf66" stroke-width="2"/>
|
||||
<text x="80" y="396" fill="#86efac" font-family="Arial, sans-serif" font-size="22" font-weight="700">VERIFY</text>
|
||||
<text x="80" y="434" fill="#f8fafc" font-family="Arial, sans-serif" font-size="28" font-weight="700">npm ci · lint · test</text>
|
||||
<text x="80" y="468" fill="#cbd5e1" font-family="Arial, sans-serif" font-size="21">сбой = не начинать build</text>
|
||||
|
||||
<path d="M360 508v42" stroke="#51cf66" stroke-width="6" stroke-linecap="round"/>
|
||||
<path d="M346 538l14 16 14-16" fill="none" stroke="#51cf66" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
|
||||
<rect x="48" y="568" width="624" height="170" rx="20" fill="#3b2d15" stroke="#fbbf24" stroke-width="2"/>
|
||||
<text x="80" y="614" fill="#fde68a" font-family="Arial, sans-serif" font-size="22" font-weight="700">BUILD — ЕДИНСТВЕННЫЙ ВЛАДЕЛЕЦ OUTPUT</text>
|
||||
<text x="80" y="654" fill="#f8fafc" font-family="Arial, sans-serif" font-size="28" font-weight="700">dist/ + REVISION</text>
|
||||
<text x="80" y="690" fill="#f8fafc" font-family="Arial, sans-serif" font-size="28" font-weight="700">+ SHA256SUMS</text>
|
||||
<text x="80" y="720" fill="#cbd5e1" font-family="Arial, sans-serif" font-size="21">в artifact попадает готовый каталог</text>
|
||||
|
||||
<path d="M360 748v42" stroke="#fbbf24" stroke-width="6" stroke-linecap="round"/>
|
||||
<path d="M346 778l14 16 14-16" fill="none" stroke="#fbbf24" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
|
||||
<rect x="48" y="808" width="624" height="144" rx="20" fill="#33285c" stroke="#c4b5fd" stroke-width="2"/>
|
||||
<text x="80" y="854" fill="#ddd6fe" font-family="Arial, sans-serif" font-size="22" font-weight="700">ARTIFACT</text>
|
||||
<text x="80" y="892" fill="#f8fafc" font-family="Arial, sans-serif" font-size="28" font-weight="700">ровно результат build</text>
|
||||
<text x="80" y="922" fill="#cbd5e1" font-family="Arial, sans-serif" font-size="21">не cache и не повторная сборка</text>
|
||||
|
||||
<path d="M360 962v42" stroke="#c4b5fd" stroke-width="6" stroke-linecap="round"/>
|
||||
<path d="M346 992l14 16 14-16" fill="none" stroke="#c4b5fd" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
|
||||
<rect x="48" y="1022" width="624" height="164" rx="20" fill="#4a1d2a" stroke="#fb7185" stroke-width="2"/>
|
||||
<text x="80" y="1068" fill="#fecdd3" font-family="Arial, sans-serif" font-size="22" font-weight="700">DEPLOY — MANUAL</text>
|
||||
<text x="80" y="1106" fill="#f8fafc" font-family="Arial, sans-serif" font-size="28" font-weight="700">читает только artifact</text>
|
||||
<text x="80" y="1140" fill="#cbd5e1" font-family="Arial, sans-serif" font-size="21">revision + checksum → delivery</text>
|
||||
<text x="80" y="1172" fill="#fda4af" font-family="Arial, sans-serif" font-size="21" font-weight="700">несовпадение → STOP до сети</text>
|
||||
|
||||
<text x="360" y="1228" text-anchor="middle" fill="#94a3b8" font-family="Arial, sans-serif" font-size="21">Cache ускоряет install. Cache ≠ релизный результат.</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.7 KiB |
@@ -0,0 +1,46 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 1280" width="720" height="1280" role="img" aria-labelledby="title desc">
|
||||
<title id="title">Диагностика deploy до внешнего действия</title>
|
||||
<desc id="desc">Вертикальный маршрут показывает, как перед deploy проверить, что job получил артефакт build, что revision и контрольные суммы совпадают и что обязательный файл существует. При отрицательном ответе pipeline останавливается до команды доставки.</desc>
|
||||
<rect width="720" height="1280" fill="#111827" rx="28"/>
|
||||
<text x="56" y="72" fill="#f8fafc" font-family="Arial, sans-serif" font-size="34" font-weight="700">Где остановить deploy</text>
|
||||
<text x="56" y="108" fill="#a5d8ff" font-family="Arial, sans-serif" font-size="22">сначала факт, затем действие</text>
|
||||
|
||||
<rect x="48" y="150" width="624" height="168" rx="20" fill="#17324d" stroke="#60a5fa" stroke-width="2"/>
|
||||
<text x="80" y="196" fill="#bfdbfe" font-family="Arial, sans-serif" font-size="22" font-weight="700">1. ИСТОЧНИК</text>
|
||||
<text x="80" y="236" fill="#f8fafc" font-family="Arial, sans-serif" font-size="27" font-weight="700">deploy получил artifact build?</text>
|
||||
<text x="80" y="270" fill="#cbd5e1" font-family="Arial, sans-serif" font-size="21">нет → исправить dependencies, не пересобирать</text>
|
||||
|
||||
<path d="M360 330v36" stroke="#60a5fa" stroke-width="6" stroke-linecap="round"/>
|
||||
<path d="M346 354l14 16 14-16" fill="none" stroke="#60a5fa" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
|
||||
<rect x="48" y="384" width="624" height="168" rx="20" fill="#33285c" stroke="#c4b5fd" stroke-width="2"/>
|
||||
<text x="80" y="430" fill="#ddd6fe" font-family="Arial, sans-serif" font-size="22" font-weight="700">2. REVISION</text>
|
||||
<text x="80" y="470" fill="#f8fafc" font-family="Arial, sans-serif" font-size="27" font-weight="700">REVISION = CI_COMMIT_SHA?</text>
|
||||
<text x="80" y="504" fill="#cbd5e1" font-family="Arial, sans-serif" font-size="21">нет → STOP: каталог не принадлежит запуску</text>
|
||||
|
||||
<path d="M360 564v36" stroke="#c4b5fd" stroke-width="6" stroke-linecap="round"/>
|
||||
<path d="M346 588l14 16 14-16" fill="none" stroke="#c4b5fd" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
|
||||
<rect x="48" y="618" width="624" height="168" rx="20" fill="#3b2d15" stroke="#fbbf24" stroke-width="2"/>
|
||||
<text x="80" y="664" fill="#fde68a" font-family="Arial, sans-serif" font-size="22" font-weight="700">3. MANIFEST</text>
|
||||
<text x="80" y="704" fill="#f8fafc" font-family="Arial, sans-serif" font-size="27" font-weight="700">SHA256SUMS сходится?</text>
|
||||
<text x="80" y="738" fill="#cbd5e1" font-family="Arial, sans-serif" font-size="21">нет → STOP: расследовать состав artifact</text>
|
||||
|
||||
<path d="M360 798v36" stroke="#fbbf24" stroke-width="6" stroke-linecap="round"/>
|
||||
<path d="M346 822l14 16 14-16" fill="none" stroke="#fbbf24" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
|
||||
<rect x="48" y="852" width="624" height="168" rx="20" fill="#123b34" stroke="#4ade80" stroke-width="2"/>
|
||||
<text x="80" y="898" fill="#bbf7d0" font-family="Arial, sans-serif" font-size="22" font-weight="700">4. ОБЯЗАТЕЛЬНЫЙ ФАЙЛ</text>
|
||||
<text x="80" y="938" fill="#f8fafc" font-family="Arial, sans-serif" font-size="27" font-weight="700">index.html существует?</text>
|
||||
<text x="80" y="972" fill="#cbd5e1" font-family="Arial, sans-serif" font-size="21">нет → STOP: build не выполнил контракт</text>
|
||||
|
||||
<path d="M360 1032v36" stroke="#4ade80" stroke-width="6" stroke-linecap="round"/>
|
||||
<path d="M346 1056l14 16 14-16" fill="none" stroke="#4ade80" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
|
||||
<rect x="48" y="1086" width="624" height="126" rx="20" fill="#4a1d2a" stroke="#fb7185" stroke-width="2"/>
|
||||
<text x="80" y="1132" fill="#fecdd3" font-family="Arial, sans-serif" font-size="22" font-weight="700">5. MANUAL GATE</text>
|
||||
<text x="80" y="1172" fill="#f8fafc" font-family="Arial, sans-serif" font-size="27" font-weight="700">только теперь → delivery</text>
|
||||
<text x="80" y="1202" fill="#fda4af" font-family="Arial, sans-serif" font-size="20">все STOP находятся до сетевого вызова</text>
|
||||
|
||||
<text x="360" y="1254" text-anchor="middle" fill="#94a3b8" font-family="Arial, sans-serif" font-size="21">Retry не заменяет объяснение происхождения файла.</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.7 KiB |
@@ -0,0 +1,55 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 1260" width="720" height="1260" role="img" aria-labelledby="title desc">
|
||||
<title id="title">Выпускные gate минимального CI/CD pipeline</title>
|
||||
<desc id="desc">Вертикальная схема показывает четыре контрольные точки: установка из lockfile, проверка кода, одна сборка с артефактом и ручной deploy с проверкой revision и checksum. Любой отрицательный результат останавливает следующий шаг.</desc>
|
||||
<rect width="720" height="1260" fill="#101827" rx="28"/>
|
||||
<text x="56" y="72" fill="#f8fafc" font-family="Arial, sans-serif" font-size="34" font-weight="700">Выпускные gate</text>
|
||||
<text x="56" y="108" fill="#a5d8ff" font-family="Arial, sans-serif" font-size="22">каждый отвечает на один вопрос</text>
|
||||
|
||||
<rect x="48" y="154" width="624" height="176" rx="20" fill="#17324d" stroke="#60a5fa" stroke-width="2"/>
|
||||
<circle cx="96" cy="204" r="25" fill="#2563eb"/>
|
||||
<text x="96" y="212" text-anchor="middle" fill="#fff" font-family="Arial, sans-serif" font-size="22" font-weight="700">1</text>
|
||||
<text x="140" y="204" fill="#bfdbfe" font-family="Arial, sans-serif" font-size="22" font-weight="700">INSTALL</text>
|
||||
<text x="80" y="250" fill="#f8fafc" font-family="Arial, sans-serif" font-size="27" font-weight="700">lockfile совпадает?</text>
|
||||
<text x="80" y="284" fill="#cbd5e1" font-family="Arial, sans-serif" font-size="21">npm ci либо создаёт среду, либо останавливает job</text>
|
||||
<rect x="510" y="184" width="126" height="42" rx="21" fill="#4a1d2a"/>
|
||||
<text x="573" y="212" text-anchor="middle" fill="#fda4af" font-family="Arial, sans-serif" font-size="20" font-weight="700">FAIL → STOP</text>
|
||||
|
||||
<path d="M360 342v40" stroke="#60a5fa" stroke-width="6" stroke-linecap="round"/>
|
||||
<path d="M346 370l14 16 14-16" fill="none" stroke="#60a5fa" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
|
||||
<rect x="48" y="400" width="624" height="176" rx="20" fill="#123b34" stroke="#4ade80" stroke-width="2"/>
|
||||
<circle cx="96" cy="450" r="25" fill="#16a34a"/>
|
||||
<text x="96" y="458" text-anchor="middle" fill="#fff" font-family="Arial, sans-serif" font-size="22" font-weight="700">2</text>
|
||||
<text x="140" y="450" fill="#bbf7d0" font-family="Arial, sans-serif" font-size="22" font-weight="700">VERIFY</text>
|
||||
<text x="80" y="496" fill="#f8fafc" font-family="Arial, sans-serif" font-size="27" font-weight="700">lint и test прошли?</text>
|
||||
<text x="80" y="530" fill="#cbd5e1" font-family="Arial, sans-serif" font-size="21">один exit code не обещает поведение на стенде</text>
|
||||
<rect x="510" y="430" width="126" height="42" rx="21" fill="#4a1d2a"/>
|
||||
<text x="573" y="458" text-anchor="middle" fill="#fda4af" font-family="Arial, sans-serif" font-size="20" font-weight="700">FAIL → STOP</text>
|
||||
|
||||
<path d="M360 588v40" stroke="#4ade80" stroke-width="6" stroke-linecap="round"/>
|
||||
<path d="M346 616l14 16 14-16" fill="none" stroke="#4ade80" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
|
||||
<rect x="48" y="646" width="624" height="182" rx="20" fill="#3b2d15" stroke="#fbbf24" stroke-width="2"/>
|
||||
<circle cx="96" cy="696" r="25" fill="#d97706"/>
|
||||
<text x="96" y="704" text-anchor="middle" fill="#fff" font-family="Arial, sans-serif" font-size="22" font-weight="700">3</text>
|
||||
<text x="140" y="696" fill="#fde68a" font-family="Arial, sans-serif" font-size="22" font-weight="700">BUILD</text>
|
||||
<text x="80" y="742" fill="#f8fafc" font-family="Arial, sans-serif" font-size="27" font-weight="700">есть один dist/ artifact?</text>
|
||||
<text x="80" y="776" fill="#cbd5e1" font-family="Arial, sans-serif" font-size="21">REVISION + SHA256SUMS дают проверяемый состав</text>
|
||||
<rect x="510" y="676" width="126" height="42" rx="21" fill="#4a1d2a"/>
|
||||
<text x="573" y="704" text-anchor="middle" fill="#fda4af" font-family="Arial, sans-serif" font-size="20" font-weight="700">FAIL → STOP</text>
|
||||
|
||||
<path d="M360 840v40" stroke="#fbbf24" stroke-width="6" stroke-linecap="round"/>
|
||||
<path d="M346 868l14 16 14-16" fill="none" stroke="#fbbf24" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
|
||||
<rect x="48" y="898" width="624" height="224" rx="20" fill="#4a1d2a" stroke="#fb7185" stroke-width="2"/>
|
||||
<circle cx="96" cy="948" r="25" fill="#e11d48"/>
|
||||
<text x="96" y="956" text-anchor="middle" fill="#fff" font-family="Arial, sans-serif" font-size="22" font-weight="700">4</text>
|
||||
<text x="140" y="948" fill="#fecdd3" font-family="Arial, sans-serif" font-size="22" font-weight="700">DEPLOY — MANUAL</text>
|
||||
<text x="80" y="994" fill="#f8fafc" font-family="Arial, sans-serif" font-size="27" font-weight="700">revision и checksum совпали?</text>
|
||||
<text x="80" y="1028" fill="#cbd5e1" font-family="Arial, sans-serif" font-size="21">job читает artifact build, не checkout и не cache</text>
|
||||
<text x="80" y="1064" fill="#fda4af" font-family="Arial, sans-serif" font-size="22" font-weight="700">нет → остановить до delivery-script</text>
|
||||
<rect x="80" y="1080" width="560" height="1" fill="#fb7185" opacity="0.6"/>
|
||||
<text x="80" y="1110" fill="#f8fafc" font-family="Arial, sans-serif" font-size="21">да → оператор вручную разрешает staging-доставку</text>
|
||||
|
||||
<text x="360" y="1198" text-anchor="middle" fill="#94a3b8" font-family="Arial, sans-serif" font-size="21">Зелёный предыдущий job не пропускает следующий gate.</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.6 KiB |
Reference in New Issue
Block a user