46 lines
4.7 KiB
XML
46 lines
4.7 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 1280" role="img" aria-labelledby="title desc">
|
|
<title id="title">Контракт входов воспроизводимой сборки</title>
|
|
<desc id="desc">Вертикальная схема ведёт от зафиксированных исходников, зависимостей и среды к чистой установке, сборке и сортированному manifest с хешами файлов.</desc>
|
|
<defs>
|
|
<marker id="arrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="8" markerHeight="8" orient="auto-start-reverse">
|
|
<path d="M0 0L10 5L0 10z" fill="#60758d"/>
|
|
</marker>
|
|
</defs>
|
|
<rect width="720" height="1280" fill="#f8fafc"/>
|
|
<rect x="42" y="34" width="636" height="112" rx="18" fill="#17324d"/>
|
|
<text x="360" y="80" text-anchor="middle" fill="#ffffff" font-family="Arial, sans-serif" font-size="28" font-weight="700">Сначала входы, затем output</text>
|
|
<text x="360" y="116" text-anchor="middle" fill="#d8e7f3" font-family="Arial, sans-serif" font-size="21">Одинаковая команда не отменяет контракт среды.</text>
|
|
|
|
<rect x="74" y="190" width="572" height="118" rx="18" fill="#e9f3ff" stroke="#3182ce" stroke-width="3"/>
|
|
<text x="360" y="234" text-anchor="middle" fill="#17324d" font-family="Arial, sans-serif" font-size="27" font-weight="700">1. Исходный код</text>
|
|
<text x="360" y="272" text-anchor="middle" fill="#425d73" font-family="Arial, sans-serif" font-size="21">git commit задаёт точное дерево файлов</text>
|
|
<path d="M360 308v36" stroke="#60758d" stroke-width="5" marker-end="url(#arrow)"/>
|
|
|
|
<rect x="74" y="352" width="572" height="118" rx="18" fill="#edf7ff" stroke="#3182ce" stroke-width="3"/>
|
|
<text x="360" y="396" text-anchor="middle" fill="#17324d" font-family="Arial, sans-serif" font-size="27" font-weight="700">2. Зависимости</text>
|
|
<text x="360" y="434" text-anchor="middle" fill="#425d73" font-family="Arial, sans-serif" font-size="21">package-lock плюс чистый npm ci</text>
|
|
<path d="M360 470v36" stroke="#60758d" stroke-width="5" marker-end="url(#arrow)"/>
|
|
|
|
<rect x="74" y="514" width="572" height="140" rx="18" fill="#fff7ed" stroke="#dd6b20" stroke-width="3"/>
|
|
<text x="360" y="558" text-anchor="middle" fill="#17324d" font-family="Arial, sans-serif" font-size="27" font-weight="700">3. Среда и команда</text>
|
|
<text x="360" y="596" text-anchor="middle" fill="#425d73" font-family="Arial, sans-serif" font-size="21">Node, npm, mode и build-флаги записаны явно</text>
|
|
<text x="360" y="626" text-anchor="middle" fill="#425d73" font-family="Arial, sans-serif" font-size="20">время и случайность — отдельные входы</text>
|
|
<path d="M360 654v36" stroke="#60758d" stroke-width="5" marker-end="url(#arrow)"/>
|
|
|
|
<rect x="74" y="698" width="572" height="126" rx="18" fill="#f3ecff" stroke="#805ad5" stroke-width="3"/>
|
|
<text x="360" y="742" text-anchor="middle" fill="#2d2360" font-family="Arial, sans-serif" font-size="27" font-weight="700">Чистая установка</text>
|
|
<text x="360" y="780" text-anchor="middle" fill="#4d3b78" font-family="Arial, sans-serif" font-size="21">не переписывает manifest и lockfile</text>
|
|
<text x="360" y="808" text-anchor="middle" fill="#4d3b78" font-family="Arial, sans-serif" font-size="20">перед запуском build</text>
|
|
<path d="M360 824v36" stroke="#60758d" stroke-width="5" marker-end="url(#arrow)"/>
|
|
|
|
<rect x="74" y="868" width="572" height="118" rx="18" fill="#f3ecff" stroke="#805ad5" stroke-width="3"/>
|
|
<text x="360" y="912" text-anchor="middle" fill="#2d2360" font-family="Arial, sans-serif" font-size="27" font-weight="700">Сборка</text>
|
|
<text x="360" y="950" text-anchor="middle" fill="#4d3b78" font-family="Arial, sans-serif" font-size="21">производит deployable files</text>
|
|
<path d="M360 986v36" stroke="#60758d" stroke-width="5" marker-end="url(#arrow)"/>
|
|
|
|
<rect x="58" y="1030" width="604" height="128" rx="18" fill="#e8fff3" stroke="#279665" stroke-width="3"/>
|
|
<text x="360" y="1076" text-anchor="middle" fill="#145a3c" font-family="Arial, sans-serif" font-size="25" font-weight="700">Сортированный manifest SHA-256</text>
|
|
<text x="360" y="1114" text-anchor="middle" fill="#24684b" font-family="Arial, sans-serif" font-size="21">полный путь и хеш каждого deployable file</text>
|
|
<text x="360" y="1220" text-anchor="middle" fill="#425d73" font-family="Arial, sans-serif" font-size="21">Сравниваем весь список, а не один bundle.</text>
|
|
</svg>
|