Files
progcode/editorial/reviews/2020-03-draft.md
T
huncode cf5472d22f
Build and deploy / deploy (push) Successful in 13s
revise March 2020 pipeline articles
2026-07-31 11:17:19 +03:00

12 KiB
Raw Blame History

Ревью автономного пакета П25 · март 2020 · «Минимальный CI/CD pipeline»

Статус: принят в publication registry 31 июля 2026 года. В нём три revision по стабильным slug; registry сохраняет метаданные базового архива:

  • editorial-2020-03-practice-ci-pipeline;
  • editorial-2020-03-mechanism-ci-pipeline;
  • editorial-2020-03-field-ci-pipeline.

Модуль не задаёт date или author, поэтому базовые метаданные архива остаются источником истины. Материалы описывают учебную конфигурацию GitLab CI/CD и учебную диагностику. В них нет реальных credentials, запущенных CI job, длительностей, production-деплоя или показателей надёжности конкретной команды.

Проход 1. Факты и техника — пройдено

Утверждение Первичный источник Проверенная граница
GitLab CI/CD задаёт последовательность job через stages и поддерживает job-level ключи artifacts, dependencies и when GitLab CI/CD YAML syntax reference В примере использован консервативный линейный набор ключей; перед применением нужно сверить его с версией GitLab и Runner конкретной установки
Job artifact — набор файлов job, а dependencies ограничивает, какие artifacts получает следующая job GitLab Job artifacts В deploy явно указан только build; artifact в статьях — контракт внутри pipeline, а не вечное или криптографически защищённое хранилище
npm ci работает с существующим lockfile и завершает установку ошибкой при конфликте package manifest и lockfile npm CLI v6: npm ci Пример использует Node 12 и npm ci как эпоху 2020 года; cache не объявлен источником релизного результата
GitLab 12.9.0, выпущенный в марте 2020 года, содержит выбранные базовые конструкции artifacts/dependencies/manual job GitLab 12.9.0 CI YAML reference Никакие поздние policy-as-code, SLSA, зрелая DevOps-платформа или GitHub Actions по умолчанию в тексты не добавлены

Технические ограничения примеров

  • deploy_staging содержит вызов вымышленного локального скрипта ./scripts/deploy-staging. Он обозначает границу побочного эффекта, но не существует в этом репозитории и не запускался.
  • REVISION и SHA256SUMS — диагностический контракт учебного артефакта. Они не заменяют доступ к среде, секреты, подпись релиза, тестирование приложения, rollback или проверку всего supply chain.
  • Команда sha256sum в тексте рассчитана на плоский GNU/Linux-совместимый каталог dist/. Для вложенного output, другого shell или другой ОС её нужно адаптировать и проверить отдельно.
  • when: manual и allow_failure: false выражают намерение остановить delivery до ручного разрешения. Точное поведение и права запуска должны быть проверены небольшим пилотом на версии GitLab конкретной команды.

Вердикт прохода: пройден. Внутри статей отделены подтверждённые свойства конфигурации от того, что требуется проверить в живом окружении.

Проход 2. Редактура и голос М3 / март 2020 — пройдено

Ревизия Симптом и цена в начале Главный вопрос Практический артефакт и ограничение
Практика Зелёный pipeline может отправить другой каталог; цена — ручной разбор и риск выложить неверный bundle Как описать входы, собрать output один раз и остановить deploy до сети GitLab YAML, таблица контракта и shell-проверка; нет настоящей доставки или измерений
Механизм Зелёный build не отвечает, какой output проверен и отправлен; цена — невозможность повторить откат Почему checkout, cache, artifact и deploy — четыре разных состояния Схема gate, manifest-проверка и таблица недопустимых подмен; checksum не выдан за полную безопасность
Полевой разбор Deploy пересобирает checkout после зелёного build; цена — потеря связи между проверкой и доставкой Как расследовать нарушение происхождения artifact без retry как первого действия Явно помеченный учебный антипример, диагностическая матрица и маршрут исправления; не real incident
  • Все три текста строятся по цепочке «симптом → причина → проверка → действие». Первые два абзаца сразу называют проблему, стоимость и границу учебного примера.
  • Голос соответствует М3 / 2020: автор уверенно описывает delivery как инженерную границу между job, но не изображает владельца сложной платформенной практики или организации production-инцидентов.
  • Формулировки не используют поздние подходы и не обещают универсальную автоматизацию. Cache отделён от артефакта, ручной gate — от доказательства функциональной готовности, а staging — от production.
  • Каждая статья содержит figure с самостоятельным alt и подписью, table с caption/thead, конфигурационный или shell-пример, нумерованный маршрут и четыре официальные ссылки.

Вердикт прохода: пройден. Тексты достаточно предметны для инженера, который уже обслуживает delivery, но сохраняют осторожность автора 2020 года.

Проход 3. Визуал и выпуск — пройдено в пределах автономного пакета

  • ci-pipeline-contract-2020.svg вертикально показывает один путь: входы → verify → единственный build → artifact → ручной deploy. В нижней части прямо отделены cache и релизный результат.
  • ci-pipeline-gates-2020.svg раскладывает четыре независимых вопроса: lockfile, lint/test, состав output и проверка перед delivery. Красная метка FAIL → STOP не позволяет трактовать зелёный предыдущий job как разрешение на deploy.
  • ci-pipeline-diagnosis-2020.svg превращает разбор в короткий вертикальный маршрут: dependency, revision, manifest, обязательный файл, затем manual gate.
  • У всех SVG есть title, desc, role="img" и aria-labelledby. В них нет script, foreignObject, внешних URL и растровых data URI.
  • Независимый raster preflight отрендерил каждый SVG через Sharp в PNG шириной 375 px. Проверены короткие строки, крупные заголовки, отсутствие обрезания, наложения и горизонтального выхода. Это проверка статичных схем, не browser-review опубликованной страницы.
  • Основной редактор повторно просмотрел три финальных raster-версии на 375 px и подтвердил вывод. После подключения registry strict audit и production build пройдены; они не подменяют запуск GitLab job или delivery-script.

Фактические проверки

Запущены после финальных правок 31 июля 2026 года:

node --check web/scripts/upgrade-2020-03.mjs
cd web && npm run audit:draft -- scripts/upgrade-2020-03.mjs
xmllint --noout \
  web/public/assets/editorial/2020/ci-pipeline-contract-2020.svg \
  web/public/assets/editorial/2020/ci-pipeline-gates-2020.svg \
  web/public/assets/editorial/2020/ci-pipeline-diagnosis-2020.svg
Проверка Результат
node --check PASS, code 0
Draft gate PASS: 8 828 / 8 888 / 8 037 знаков основного текста; у каждой статьи есть проблема в начале, figure, table, code, маршрут и источники
xmllint --noout PASS, все три SVG — корректный XML
Source reachability PASS, четыре официальные ссылки вернули HTTP 200 после допустимых redirect, где он есть
Sharp preflight 375 px PASS, три вертикальных SVG читабельны, без обрезания и наложения
Strict audit после подключения registry PASS: 8 828 / 8 888 / 8 037 знаков; по одному figure и table, 2 / 1 / 2 code example
npm run build PASS, code 0, 374 статические страницы
Scope/self-review PASS: в revision нет date/author, articles.json не перезаписан; посторонние незакоммиченные материалы не добавлялись в индекс

Выпусковой вердикт: тройное ревью пройдено, пакет принят к публикации. Registry заменяет только редакционные поля по стабильному slug. Реальный GitLab job, браузерная страница и внешняя доставка не выполнялись и не выданы за результат статических проверок.