This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# Производство редакционных партий
|
||||
|
||||
На 31 июля 2026 года строгий аудит проходит 76 из 358 созданных материалов. Остальные 282 не считаются «почти готовыми»: их нужно заменить, а не косметически удлинить.
|
||||
На 31 июля 2026 года строгий аудит проходит 79 из 358 созданных материалов. Остальные 279 не считаются «почти готовыми»: их нужно заменить, а не косметически удлинить.
|
||||
|
||||
## Одна партия
|
||||
|
||||
|
||||
@@ -0,0 +1,116 @@
|
||||
# Ревью автономного пакета П25 · март 2020 · «Минимальный CI/CD pipeline»
|
||||
|
||||
Статус: **принят в publication registry 31 июля 2026 года**. В нём три
|
||||
revision по стабильным slug; registry сохраняет метаданные базового архива:
|
||||
|
||||
- <code>editorial-2020-03-practice-ci-pipeline</code>;
|
||||
- <code>editorial-2020-03-mechanism-ci-pipeline</code>;
|
||||
- <code>editorial-2020-03-field-ci-pipeline</code>.
|
||||
|
||||
Модуль не задаёт <code>date</code> или <code>author</code>, поэтому базовые
|
||||
метаданные архива остаются источником истины. Материалы
|
||||
описывают учебную конфигурацию GitLab CI/CD и учебную диагностику. В них нет
|
||||
реальных credentials, запущенных CI job, длительностей, production-деплоя или
|
||||
показателей надёжности конкретной команды.
|
||||
|
||||
## Проход 1. Факты и техника — пройдено
|
||||
|
||||
| Утверждение | Первичный источник | Проверенная граница |
|
||||
| --- | --- | --- |
|
||||
| GitLab CI/CD задаёт последовательность job через <code>stages</code> и поддерживает job-level ключи <code>artifacts</code>, <code>dependencies</code> и <code>when</code> | [GitLab CI/CD YAML syntax reference](https://docs.gitlab.com/ee/ci/yaml/) | В примере использован консервативный линейный набор ключей; перед применением нужно сверить его с версией GitLab и Runner конкретной установки |
|
||||
| Job artifact — набор файлов job, а <code>dependencies</code> ограничивает, какие artifacts получает следующая job | [GitLab Job artifacts](https://docs.gitlab.com/ci/jobs/job_artifacts/) | В deploy явно указан только <code>build</code>; artifact в статьях — контракт внутри pipeline, а не вечное или криптографически защищённое хранилище |
|
||||
| <code>npm ci</code> работает с существующим lockfile и завершает установку ошибкой при конфликте package manifest и lockfile | [npm CLI v6: npm ci](https://docs.npmjs.com/cli/v6/commands/npm-ci/) | Пример использует Node 12 и <code>npm ci</code> как эпоху 2020 года; cache не объявлен источником релизного результата |
|
||||
| GitLab 12.9.0, выпущенный в марте 2020 года, содержит выбранные базовые конструкции artifacts/dependencies/manual job | [GitLab 12.9.0 CI YAML reference](https://gitlab.com/gitlab-org/gitlab/-/blob/v12.9.0-ee/doc/ci/yaml/README.md) | Никакие поздние policy-as-code, SLSA, зрелая DevOps-платформа или GitHub Actions по умолчанию в тексты не добавлены |
|
||||
|
||||
### Технические ограничения примеров
|
||||
|
||||
- <code>deploy_staging</code> содержит вызов вымышленного локального скрипта
|
||||
<code>./scripts/deploy-staging</code>. Он обозначает границу побочного
|
||||
эффекта, но не существует в этом репозитории и не запускался.
|
||||
- <code>REVISION</code> и <code>SHA256SUMS</code> — диагностический контракт
|
||||
учебного артефакта. Они не заменяют доступ к среде, секреты, подпись релиза,
|
||||
тестирование приложения, rollback или проверку всего supply chain.
|
||||
- Команда <code>sha256sum</code> в тексте рассчитана на плоский
|
||||
GNU/Linux-совместимый каталог <code>dist/</code>. Для вложенного output,
|
||||
другого shell или другой ОС её нужно адаптировать и проверить отдельно.
|
||||
- <code>when: manual</code> и <code>allow_failure: false</code> выражают
|
||||
намерение остановить 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 с
|
||||
<code>caption</code>/<code>thead</code>, конфигурационный или shell-пример,
|
||||
нумерованный маршрут и четыре официальные ссылки.
|
||||
|
||||
Вердикт прохода: **пройден**. Тексты достаточно предметны для инженера,
|
||||
который уже обслуживает delivery, но сохраняют осторожность автора 2020 года.
|
||||
|
||||
## Проход 3. Визуал и выпуск — пройдено в пределах автономного пакета
|
||||
|
||||
- <code>ci-pipeline-contract-2020.svg</code> вертикально показывает один
|
||||
путь: входы → verify → единственный build → artifact → ручной deploy. В
|
||||
нижней части прямо отделены cache и релизный результат.
|
||||
- <code>ci-pipeline-gates-2020.svg</code> раскладывает четыре независимых
|
||||
вопроса: lockfile, lint/test, состав output и проверка перед delivery.
|
||||
Красная метка <code>FAIL → STOP</code> не позволяет трактовать зелёный
|
||||
предыдущий job как разрешение на deploy.
|
||||
- <code>ci-pipeline-diagnosis-2020.svg</code> превращает разбор в короткий
|
||||
вертикальный маршрут: dependency, revision, manifest, обязательный файл,
|
||||
затем manual gate.
|
||||
- У всех SVG есть <code>title</code>, <code>desc</code>,
|
||||
<code>role="img"</code> и <code>aria-labelledby</code>. В них нет script,
|
||||
<code>foreignObject</code>, внешних 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 года:
|
||||
|
||||
<pre><code>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</code></pre>
|
||||
|
||||
| Проверка | Результат |
|
||||
| --- | --- |
|
||||
| <code>node --check</code> | PASS, code 0 |
|
||||
| Draft gate | PASS: 8 828 / 8 888 / 8 037 знаков основного текста; у каждой статьи есть проблема в начале, figure, table, code, маршрут и источники |
|
||||
| <code>xmllint --noout</code> | 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 |
|
||||
| <code>npm run build</code> | PASS, code 0, 374 статические страницы |
|
||||
| Scope/self-review | PASS: в revision нет date/author, <code>articles.json</code> не перезаписан; посторонние незакоммиченные материалы не добавлялись в индекс |
|
||||
|
||||
Выпусковой вердикт: **тройное ревью пройдено, пакет принят к публикации**.
|
||||
Registry заменяет только редакционные поля по стабильному slug. Реальный
|
||||
GitLab job, браузерная страница и внешняя доставка не выполнялись и не выданы
|
||||
за результат статических проверок.
|
||||
Reference in New Issue
Block a user