spectrum-cli 5.0.2 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -9,6 +9,34 @@ This is the changelog of the `spectrum-cli` npm package. Its version comes from
9
9
  `package.json`; the release commands use Git tags and `CHANGELOG.md` in the
10
10
  **target project** and do not update that project's `package.json`.
11
11
 
12
+ ## 🚀 [6.0.0] - 2026-10-29
13
+
14
+ ### Breaking change
15
+
16
+ - У `spectrum chart start` короткий флаг `-n` теперь означает `--no-verify` и отключает preflight. Для запуска без ожидания публикации чарта используйте `--no-wait`.
17
+
18
+ ### Added
19
+
20
+ - Во всех 21 командах с действием доступен `-n, --no-verify`: команда пропускает preflight и проверку обновлений CLI, сохраняя чтение необходимых входных данных и обработку ошибок операций. Поддерживается сочетание `-ns`; `--dry` и `--no-verify` несовместимы.
21
+
22
+ ### Changed
23
+
24
+ - README содержит полный список команд, аргументов и опций; справка вложенных команд использует общий формат и показывает актуальные флаги.
25
+ - Добавлены проверки разбора флагов у всех команд, соответствия README регистрации команд и выполнения release/hotfix без preflight на временных Git origins, а также обхода preflight автоматизации.
26
+
27
+ ## 🚀 [5.1.0]
28
+
29
+ ### Changed
30
+
31
+ - Deployment-адреса и GitLab-проекты задаются окружением: встроенные URL/namespace удалены, примеры и fixtures используют example-домены. Добавлены preflight наличия настроек, доступности, GitLab token scope/роли, YouTrack identity/проектов/полей и registry login/чтения. Права записи не объявляются доказанными по успешному GET.
32
+
33
+ ### Added
34
+
35
+ - Все новые automation-команды поддерживают `-d, --dry` и `-s, --silence`: dry выполняет только предпроверки без изменения исходников, отчётов и удалённых сущностей; silence скрывает успешные предпроверки, сохраняя ошибки и результаты.
36
+
37
+ - Команды `nextjs licenses`, `sbom catalog resolve/populate` и `security scan/track/reconcile/repair` перенесены из CI-компонентов в JavaScript-модули CLI. Сохранены OCI provenance/integrity, CVE и проектные задачи, Priority, изоляция проверок, проверки исправлений и отчёты для Mattermost.
38
+ - Автоматизация работает без интерактивных запросов и проверки обновлений; версии CLI в CI закрепляются служебными образами. Python для новых команд не требуется.
39
+
12
40
  ## 🚀 [5.0.2] - 2026-10-23
13
41
 
14
42
  ### Changed
package/README.md CHANGED
@@ -14,11 +14,12 @@ npm install -g spectrum-cli
14
14
  spectrum --help
15
15
  ```
16
16
 
17
- Перед выполнением каждой команды CLI проверяет опубликованную версию `spectrum-cli`
17
+ Перед выполнением команд workflow CLI проверяет опубликованную версию `spectrum-cli`
18
18
  в npm Registry. Если доступна новая версия, показывает текущую и новую версии и
19
19
  команду `spectrum upgrade`. Она запускает `npm install -g spectrum-cli`.
20
20
  Проверка ограничена 200 мс; недоступность Registry не влияет на выполнение
21
- команды и не выводит ошибку.
21
+ команды и не выводит ошибку. С `--dry` или `--no-verify` проверка обновлений
22
+ не выполняется.
22
23
 
23
24
  ### 🔧 Из исходников
24
25
 
@@ -42,6 +43,9 @@ spectrum --help
42
43
  # Показать текущую версию CLI
43
44
  spectrum -v # или spectrum --version
44
45
 
46
+ # Обновить установленный CLI
47
+ spectrum upgrade
48
+
45
49
  # 🚀 Управление релизами
46
50
  spectrum release start [--stable] # Схлопнуть fragments и атомарно отправить release commit в dev и main/master
47
51
  spectrum release deploy # Создать стабильный тег release/X.Y.Z из заголовка CHANGELOG
@@ -54,7 +58,7 @@ spectrum hotfix close # После stable pipeline: main/master
54
58
 
55
59
  # 📈 Теги chart
56
60
  spectrum chart start # Создать тег по CHANGELOG.md чарта и дождаться публикации в Helm-registry
57
- spectrum chart start -n # Не ждать публикации после отправки тега
61
+ spectrum chart start --no-wait # Не ждать публикации после отправки тега
58
62
  spectrum chart start --force # Разрешить версию не выше последнего remote-тега, если ее еще нет в registry и Git
59
63
  spectrum chart deploy # Обновить helmrelease.yaml до последнего chart-тега и запушить
60
64
  spectrum chart deploy --instances sd,cbch # Обновить только выбранные инстансы instances/<name>
@@ -67,12 +71,42 @@ spectrum changelog write # Выравнять заголовки C
67
71
 
68
72
  # 🔑 GitLab токены
69
73
  spectrum token rotate # Пролить SC_BOT_PAT в CI variables
74
+
75
+ # CI: Next.js, SBOM и security
76
+ spectrum nextjs licenses
77
+ spectrum sbom catalog resolve
78
+ spectrum sbom catalog populate
79
+ spectrum security scan
80
+ spectrum security track
81
+ spectrum security reconcile
82
+ spectrum security repair
70
83
  ```
71
84
 
72
- Все команды с действием показывают, какая предпроверка успешно пройдена;
85
+ По умолчанию команды с действием показывают, какая предпроверка успешно пройдена;
73
86
  при ошибке выводят её имя и причину. Независимые предпроверки продолжают
74
87
  выполняться после ошибки; зависимые проверки без нужных данных помечаются как
75
88
  невыполненные. Шаги команды запускаются, только если все проверки прошли.
89
+
90
+ `-n, --no-verify` доступен во всех 21 командах с действием: пропускает
91
+ preflight и проверку обновлений CLI, затем запускает действия команды.
92
+ Чтение необходимых входных данных (версии, fragments, пути, конфигурация,
93
+ токены) остаётся частью подготовки к действию. Ошибки чтения и самих операций
94
+ по-прежнему останавливают выполнение. Флаг не отменяет выбор типа fragment,
95
+ запрос токенов, подтверждение публикации chart или ожидание registry.
96
+ Для отключения ожидания у `chart start` отдельно укажите `--no-wait`.
97
+ Прежний короткий флаг `chart start -n` теперь означает `--no-verify`.
98
+ Release/hotfix используют локальные теги и сохранённые refs `origin/*`
99
+ для определения базовой версии, без preflight fetch и сверки с сервером.
100
+
101
+ ```bash
102
+ spectrum release start -n
103
+ spectrum chart start --no-verify --no-wait
104
+ spectrum security repair -ns
105
+ ```
106
+
107
+ `--dry` и `--no-verify` несовместимы: CLI завершится с ошибкой до действий.
108
+ Без `--no-verify` сохраняются обычные предпроверки.
109
+
76
110
  `-s, --silence` скрывает сообщения об успешно пройденных предпроверках.
77
111
  Ошибки проверок и итоговое сообщение команды остаются видны; флаг можно
78
112
  совмещать с `-d, --dry`.
@@ -88,8 +122,10 @@ GitLab; `token rotate -d` запрашивает токены и проверя
88
122
  | --- | --- | --- |
89
123
  | `-d` | `--dry` | Все команды с действием: только предпроверки |
90
124
  | `-s` | `--silence` | Все команды с действием: скрыть успешные предпроверки |
91
- | `-f` | `--force` | `chart start`: разрешить версию не больше последнего тега на `origin`; проверки Git-тега и Helm-registry обязательны |
92
- | `-n` | `--no-wait` | `chart start`: не ждать появления версии в Helm-registry после push; по умолчанию команда ждёт |
125
+ | `-f` | `--force` | `chart start`: разрешить версию не больше последнего тега на `origin`; остальные preflight сохраняются, если не задан `--no-verify` |
126
+ | `-n` | `--no-verify` | Все команды с действием: пропустить preflight и сразу выполнить действия |
127
+ | — | `--no-wait` | `chart start`: не ждать появления версии в Helm-registry после push; по умолчанию команда ждёт |
128
+ | — | `--stable` | `release start`: переход с 0.x на 1.0.0 |
93
129
  | `-i <names>` | `--instances <names>` | `chart deploy`: выбрать инстансы через запятую |
94
130
  | `-h` | `--help` | Справка CLI и команд |
95
131
  | `-v` | `--version` | Версия CLI |
@@ -100,6 +136,9 @@ GitLab; `token rotate -d` запрашивает токены и проверя
100
136
  # Справка по релизам
101
137
  spectrum release --help
102
138
 
139
+ # Справка по хотфиксам
140
+ spectrum hotfix --help
141
+
103
142
  # Справка по changelog
104
143
  spectrum changelog --help
105
144
 
@@ -108,6 +147,11 @@ spectrum chart --help
108
147
 
109
148
  # Справка по токенам
110
149
  spectrum token --help
150
+
151
+ # Справка по CI-командам
152
+ spectrum nextjs --help
153
+ spectrum sbom catalog --help
154
+ spectrum security --help
111
155
  ```
112
156
 
113
157
  ## ✨ Особенности
@@ -141,6 +185,10 @@ spectrum-cli/
141
185
  │ ├── hotfix/ # Проверки и этапы hotfix
142
186
  │ ├── token/ # Конфиг, GitLab API и ротация
143
187
  │ ├── integrations/ # Общие функции внешних сервисов
188
+ │ ├── automation/ # Общие операции ввода-вывода для CI
189
+ │ ├── nextjs/ # LICENSE standalone-пакетов
190
+ │ ├── sbom/ # Поиск и публикация OCI-каталогов
191
+ │ └── security/ # Аудит, задачи и исправления
144
192
  ├── __tests__/ # Модульные и интеграционные тесты
145
193
  ├── package.json
146
194
  ├── install.sh
@@ -153,26 +201,45 @@ spectrum-cli/
153
201
 
154
202
  ### Команды
155
203
 
156
- | Команда | Описание |
157
- | --------------------------- | ----------------------------------- |
158
- | `spectrum release start` | Схлопнуть и опубликовать fragments |
159
- | `spectrum release deploy` | Создать стабильный тег release/X.Y.Z |
160
- | `spectrum release close` | Закрыть релиз |
161
- | `spectrum changelog append` | Создать changelog fragment |
162
- | `spectrum changelog check` | Проверить changelog и fragments |
163
- | `spectrum chart start` | Создать и запушить chart тег |
164
- | `spectrum chart deploy` | Обновить chart версию в helmrelease |
165
- | `spectrum chart verify` | Проверить ingress paths chart |
166
- | `spectrum token rotate` | Пролить SC_BOT_PAT в CI |
204
+ Ниже перечислены все команды с действием из `spectrum --help` и справки
205
+ вложенных групп. Каждая поддерживает `-n, --no-verify`, `-d, --dry` и
206
+ `-s, --silence`.
207
+
208
+ | Команда | Аргументы и дополнительные опции | Назначение |
209
+ | --- | --- | --- |
210
+ | `spectrum upgrade` | — | Обновить CLI через npm |
211
+ | `spectrum release start` | `--stable` | Собрать fragments и отправить release commit в dev и main/master |
212
+ | `spectrum release deploy` | — | Создать и отправить стабильный тег `release/X.Y.Z` |
213
+ | `spectrum release close` | — | Свести main/master в dev |
214
+ | `spectrum hotfix start` | — | Подготовить hotfix CHANGELOG локально |
215
+ | `spectrum hotfix deploy` | — | Отправить тег `hotfix/X.Y.Z` после merge в production |
216
+ | `spectrum hotfix close` | — | Свести production в dev после stable pipeline |
217
+ | `spectrum changelog append` | `<message>` | Создать changelog fragment |
218
+ | `spectrum changelog check` | — | Проверить CHANGELOG.md и fragments |
219
+ | `spectrum changelog write` | — | Нормализовать заголовки и отформатировать CHANGELOG.md |
220
+ | `spectrum chart start` | `-f, --force`, `--no-wait` | Создать и отправить chart-тег, дождаться registry |
221
+ | `spectrum chart deploy` | `-i, --instances <names>` | Обновить helmrelease и опубликовать изменения |
222
+ | `spectrum chart verify` | `<source_path>` | Сравнить ingress paths с маршрутами Next.js |
223
+ | `spectrum token rotate` | — | Пролить `SC_BOT_PAT` в CI variables |
224
+ | `spectrum nextjs licenses` | — | Сохранить LICENSE compiled-пакетов в standalone |
225
+ | `spectrum sbom catalog resolve` | — | Найти OCI-каталоги зависимостей образа |
226
+ | `spectrum sbom catalog populate` | — | Построить и опубликовать OCI-каталоги |
227
+ | `spectrum security scan` | — | Проверить npm-зависимости и runtime |
228
+ | `spectrum security track` | — | Найти или создать задачи YouTrack |
229
+ | `spectrum security reconcile` | — | Запустить tracker и получить номера задач |
230
+ | `spectrum security repair` | — | Исправить зависимости, проверить и создать MR |
167
231
 
168
232
  ### 🛡️ Preflight-проверки по командам
169
233
 
234
+ Этот список описывает запуск без `--no-verify`.
235
+
170
236
  - `spectrum release start`: чистая и актуальная dev-ветка, `dev` содержит `origin/main` или `origin/master`, стабильный тег, достижимый из production-ветки, согласованная опубликованная история `CHANGELOG.md` и не более одного открытого релиза. При первом запуске нужны валидные fragments и свободная версия; повторный дополняет открытый раздел без повышения версии. `package.json` не читается.
171
237
  - `spectrum release deploy`: чистая и актуальная main/master, стабильная версия `X.Y.Z` из верхнего заголовка `CHANGELOG.md`, отсутствие этой версии среди локальных и remote-тегов всех трёх форм. Команда не создает RC-теги.
172
238
  - `spectrum release close`: чистая и актуальная main/master, версия из верхнего заголовка `CHANGELOG.md` и remote stable-тег поддерживаемой формы, указывающий на текущий commit.
173
239
  - `spectrum changelog append <message>`: `git-repo`, `changelog-exists`, валидные ID задачи, git identity и тип fragment. Команда не изменяет общий `CHANGELOG.md`.
174
- - `spectrum changelog check`: `git-repo`, `changelog-exists`, `changelog-prettier-check`, наличие и формат всех changelog fragments.
175
- - `spectrum chart start`: `git-repo`, `clean-working-tree`, `on-main-branch`, `single-chart` (ровно один `charts/<chart-name>/Chart.yaml`), валидный верхний SemVer-заголовок в `charts/<chart-name>/CHANGELOG.md`, отсутствие тега `chart-<name>-<version>` локально и на `origin`, отсутствие этой версии чарта в Helm-registry. Для запроса registry нужен `SC_DEVELOPER_PAT` (PAT со scope `api` и доступом к проекту; роль Owner не требуется); ошибка доступа блокирует команду. Право отправки chart-тега определяется отдельно правилами protected tags. `-f, --force` обходит только проверку повышения версии относительно последнего remote-тега. После push команда по умолчанию ждёт версию в registry; `-n, --no-wait` отключает ожидание.
240
+ - `spectrum changelog check`: `git-repo`, `changelog-exists`, `changelog-prettier-check`, наличие и формат всех changelog fragments. С `--no-verify` команда завершается без проверок.
241
+ - `spectrum changelog write`: `git-repo`, `changelog-exists`, доступность Prettier.
242
+ - `spectrum chart start`: `git-repo`, `clean-working-tree`, `on-main-branch`, `single-chart` (ровно один `charts/<chart-name>/Chart.yaml`), валидный верхний SemVer-заголовок в `charts/<chart-name>/CHANGELOG.md`, отсутствие тега `chart-<name>-<version>` локально и на `origin`, отсутствие этой версии чарта в Helm-registry. Для запроса registry нужен `SC_DEVELOPER_PAT` (PAT со scope `api` и доступом к проекту; роль Owner не требуется); ошибка доступа блокирует команду. Право отправки chart-тега определяется отдельно правилами protected tags. `-f, --force` обходит только проверку повышения версии относительно последнего remote-тега. После push команда по умолчанию ждёт версию в registry; `--no-wait` отключает ожидание.
176
243
 
177
244
  Для обратной совместимости chart-команды принимают `SC_OWNER_PAT`, если
178
245
  `SC_DEVELOPER_PAT` не задана или пуста. `SC_OWNER_PAT` deprecated: поддержка
@@ -180,8 +247,8 @@ spectrum-cli/
180
247
  выводит предупреждение с просьбой перейти на `SC_DEVELOPER_PAT`. Если заданы обе
181
248
  переменные, используется `SC_DEVELOPER_PAT` без предупреждения.
182
249
 
183
- - `spectrum chart deploy`: `git-repo`, `clean-working-tree`, `on-main-branch` (текущая ветка `main`), `remote-origin` (настроен `origin`), `remote-reachable` (доступен `origin`), `single-chart`, `helmrelease-files` (найдены `helmrelease.yaml`).
184
- - `spectrum chart verify <source_path>`: `git-repo`, `single-values-yaml` (ровно один `charts/**/values.yaml`), `values-ingress-sections` (есть `ingress.paths.api/pages/assets`), `source-path-directory`, `next-project`, `build-command-support`.
250
+ - `spectrum chart deploy`: `git-repo`, `clean-working-tree`, `on-main-branch` (текущая ветка `main/master`), `branch-up-to-date`, `remote-origin` (настроен `origin`), `remote-reachable` (доступен `origin`), `single-chart`, `helmrelease-files` (найдены `helmrelease.yaml`).
251
+ - `spectrum chart verify <source_path>`: `git-repo`, `branch-up-to-date`, `single-values-yaml` (ровно один `charts/**/values.yaml`), `values-ingress-sections` (есть `ingress.paths.api/pages/assets`), `source-path-directory`, `next-project`, `build-command-support`.
185
252
  - `spectrum token rotate`: `load-config` (есть валидный `~/.config/spectrum-cli/config.yaml`), `ask-tokens` (owner PAT и `SC_BOT_PAT` только в памяти), `check-access` (все группы и проекты доступны owner PAT).
186
253
 
187
254
  ## 🔄 Workflow релиза
@@ -323,7 +390,7 @@ CI-часть реализует подключенный release component, а
323
390
  3. Читает версию из верхнего заголовка `charts/<chart-name>/CHANGELOG.md` и проверяет SemVer
324
391
  4. Собирает тег `chart-<name>-<version>`
325
392
  5. Проверяет, что такого тега еще нет локально и на `origin`, а версия отсутствует в Helm-registry
326
- 6. Создает тег и пушит его в `origin`, затем ждёт появления версии в registry; `-n, --no-wait` отключает ожидание
393
+ 6. Создает тег и пушит его в `origin`, затем ждёт появления версии в registry; `--no-wait` отключает ожидание
327
394
 
328
395
  ### `spectrum chart deploy`
329
396
 
@@ -476,3 +543,142 @@ MIT License - см. [LICENSE](./LICENSE)
476
543
  ---
477
544
 
478
545
  _Создано для автоматизации повседневных задач разработки_ 🛠️
546
+
547
+ ## Команды для CI: Next.js, SBOM и security
548
+
549
+ Начиная с 5.1.0 логика команд написана на JavaScript и входит в npm-пакет.
550
+ Команды не задают вопросов и не проверяют обновления CLI. Они не запускают
551
+ release/hotfix preflight, рассчитанный на интерактивную работу разработчика.
552
+
553
+ | Команда | Назначение | Результат |
554
+ | --- | --- | --- |
555
+ | `spectrum nextjs licenses` | Сохранить исходные LICENSE уже включённых compiled-пакетов Next.js | JSON summary в stdout; код 2 при неполном результате |
556
+ | `spectrum sbom catalog resolve` | Найти Next в immutable образе, проверить OCI-каталоги, запросить отсутствующие версии | `sbom-catalog/<prefix>/{selection.json,report.json,report.md}` |
557
+ | `spectrum sbom catalog populate` | Построить каталог по официальному npm tarball и историческому Git tree | `sbom-catalog-updater/{report.json,report.md}` |
558
+ | `spectrum security scan` | Проверить `npm audit --omit=dev`, runtime и фактическую версию Node | `security-report/findings.json`, raw evidence, `scan.env` |
559
+ | `spectrum security reconcile` | Запустить центральный tracker и получить ссылки на задачи | `security-report/tracked.json` |
560
+ | `spectrum security track` | Найти/создать общие CVE и проектные задачи | `security-report/tracked.json` в центральном pipeline |
561
+ | `spectrum security repair` | Исправить одну проектную задачу за MR, выполнить проверки и повторный аудит | `security-report/{final.json,message.json}` |
562
+
563
+ Код 0 означает успешное выполнение, 1 — ошибку security/запуска, 2 — неполный
564
+ результат SBOM или LICENSE. Команды работают в текущем каталоге. Отсутствующие
565
+ credentials/некорректные отчёты приводят к ошибке, а не к чистому аудиту.
566
+ Автоматическое слияние MR отключено; сетевые записи не повторяются вслепую.
567
+
568
+ Компоненты передают свои inputs через job-local окружение. `security scan`
569
+ читает `NIGHTLY_YOUTRACK_PROJECT`, `NIGHTLY_YOUTRACK_TIME_TRACKING_ARTICLE`,
570
+ `NIGHTLY_YOUTRACK_TESTER`, необязательный `NIGHTLY_YOUTRACK_SUBSYSTEM`,
571
+ `NIGHTLY_DOCKERFILE`, `NIGHTLY_PLATFORMS` и `NIGHTLY_CHECK_COMMANDS` (JSON argv).
572
+ Токены `GLAB_BOT_PAT` и `YOUTRACK_PRIVATE_TOKEN` остаются секретными CI variables;
573
+ YouTrack-токен нужен только центральному tracker. Для registry используются
574
+ `NEXUS_USER`/`NEXUS_PASSWORD` либо стандартные CI registry credentials.
575
+ Секреты автоматизации исключаются из окружения выполняемых проверок проекта.
576
+
577
+ `sbom catalog resolve` читает `SBOM_CATALOG_CLIENT_ENABLED=true`,
578
+ `SBOM_CATALOG_FRAMEWORK=nextjs`, `SBOM_CATALOG_PREFIX` (по умолчанию `site:`),
579
+ `SBOM_CATALOG_REPOSITORY`, `DOCKER_IMAGE`, `APP_VERSION` и стандартные GitLab
580
+ `CI_*` variables. Чтение каталога использует `SBOM_CATALOG_USER` и
581
+ `SBOM_CATALOG_PASSWORD`, если заданы. `populate` требует защищённый `main`,
582
+ `NEXT_CATALOG_VERSIONS` (JSON-массив 1..10 точных версий) и центральные
583
+ `NEXUS_USER`/`NEXUS_PASSWORD`. Namespace записи задаёт только доверенная
584
+ project variable `SBOM_CATALOG_PUBLISH_REPOSITORY`.
585
+
586
+ Внешние инструменты: Linux amd64 для SBOM bootstrap; Git для каталога,
587
+ Trivy/Skopeo/Buildah для runtime-аудита и исправлений. SBOM-команды скачивают
588
+ закреплённые ORAS/Syft с проверкой SHA-256, ограничениями размера и времени.
589
+ Python для этих команд не требуется. Они не выполняют код из npm tarball
590
+ или upstream build-рецептов. Неоднозначное происхождение остаётся unresolved.
591
+ Поля CVE, Severity, Priority и Type=Group проверяются до создания подзадач;
592
+ CRITICAL получает Stopper (Неотложная), HIGH — Critical (Критическая).
593
+
594
+ Образы и адреса сервисов задаёт CI-конфигурация конкретной установки.
595
+ CLI не содержит дефолтов для YouTrack, registry или внутренних GitLab-проектов.
596
+ Само наличие команды `track` не сериализует процессы: job должен оставаться
597
+ в одном центральном проекте с `resource_group: nightly-youtrack-global`.
598
+ Отдельный consumer lock `nightly-security-fix` защищает исправления проекта.
599
+
600
+ Для проверки миграции:
601
+
602
+ ```sh
603
+ npm ci
604
+ npm test -- --runInBand
605
+ npm pack --dry-run
606
+ ```
607
+
608
+ Тесты используют локальные Git-репозитории и fake API. Зафиксированные parity
609
+ fixtures получены из прежнего Python-кода; исполняемый Python в пакет не входит.
610
+ Публикация CLI, образов, компонентов и запуск живого pipeline — отдельные шаги.
611
+
612
+ ### Preflight для команд автоматизации
613
+
614
+ Обязательные deployment-настройки задаются явно:
615
+
616
+ | Команда | Настройки |
617
+ | --- | --- |
618
+ | `security track` | `YOUTRACK_URL`, `YOUTRACK_PRIVATE_TOKEN`, `CI_API_V4_URL`, `GLAB_BOT_PAT`, идентификаторы consumer job/project и component SHA |
619
+ | `security reconcile` | `NIGHTLY_TRACKER_PROJECT`, `NIGHTLY_COMPONENT_SHA`, `NIGHTLY_SCAN_JOB_ID`, `CI_PROJECT_ID`, GitLab API/token; при пустом отчёте сеть не нужна |
620
+ | `security repair` | GitLab API/token и результаты scan/tracking; при пустом отчёте запись и проверка токена не нужны |
621
+ | `sbom catalog resolve` | `SBOM_CATALOG_REPOSITORY`, `DOCKER_IMAGE`, `APP_VERSION`; `SBOM_CATALOG_UPDATER_PROJECT` для запроса отсутствующих версий |
622
+ | `sbom catalog populate` | `SBOM_CATALOG_PUBLISH_REPOSITORY`, `NEXUS_USER`, `NEXUS_PASSWORD`, защищённый main и точные `NEXT_CATALOG_VERSIONS` |
623
+ | `security scan/repair` с `NEXUS_*` | Дополнительно явный `NIGHTLY_REGISTRY_HOSTS`; один логин без пароля или наоборот считается ошибкой |
624
+
625
+ В GitLab выполняются GET `/user`, `/personal_access_tokens/self` и чтение
626
+ целевых проектов. Проверяются активность токена, scope `api` для записи
627
+ (`api`/`read_api` для чтения), эффективная роль Developer/Reporter и состояние
628
+ проекта. Fine-grained/прочие токены, для которых introspection не подтверждает
629
+ эти scope, не считаются проверенными. Защита веток/тегов дополнительно
630
+ проверяется сервером при конкретной операции.
631
+
632
+ В YouTrack выполняются GET `/users/me`, чтение двух проектов, их полей и
633
+ поиск задач. До создания первой задачи проверяются активность пользователя,
634
+ доступность проектов и обязательные поля. Ответы 401/403, недоступность и
635
+ неверный TLS приводят к ошибке с названием проверки; секреты/тела ответов
636
+ не выводятся. Инспекция полей не требует тестового изменения проекта.
637
+
638
+ Writer выполняет ORAS login и чтение точного namespace до скачивания исходников
639
+ и построения каталога. Preflight сохраняется в отчёте. Чтение/логин не доказывают
640
+ права Create/Update/Link Issue, доступ к приватным полям, workflow-переходам или
641
+ registry push: эти права проверяются соответствующими операциями. Они явно
642
+ помечены `checked_by_operations`/`checked_by_publish`, без ложного статуса
643
+ «запись проверена». Preflight не создаёт задач, MR, upload-сессий или пробных
644
+ каталогов. Ошибка preflight останавливает следующие изменения и остаётся
645
+ в JSON/Markdown/notification-артефактах, когда исходный отчёт уже доступен.
646
+
647
+ Источник контрактов: [GitLab token scopes](https://docs.gitlab.com/security/tokens/access_token_scopes/),
648
+ [YouTrack My User Profile](https://www.jetbrains.com/help/youtrack/devportal/resource-api-users-me.html),
649
+ [YouTrack project fields](https://www.jetbrains.com/help/youtrack/devportal/resource-api-admin-projects-projectID-customFields.html).
650
+
651
+ ### No-verify, dry и silence для команд автоматизации
652
+
653
+ Все семь команд `nextjs licenses`, `sbom catalog resolve/populate` и
654
+ `security scan/track/reconcile/repair` поддерживают `-n, --no-verify`, `-d, --dry` и
655
+ `-s, --silence`, включая сочетания `-ns` и `-ds`.
656
+
657
+ ```sh
658
+ spectrum nextjs licenses --dry
659
+ spectrum sbom catalog populate --dry --silence
660
+ spectrum security repair -ds
661
+ spectrum security repair --no-verify --silence
662
+ ```
663
+
664
+ `--dry` выполняет предпроверки настроек, файлов, инструментов и доступов,
665
+ после чего останавливается перед действиями команды. Он не копирует LICENSE,
666
+ не выполняет npm audit/Trivy/Syft scan или исправления, не создаёт задачи,
667
+ MR и downstream pipeline, не публикует каталоги и не перезаписывает отчёты.
668
+ Для проверки используются GET-запросы, чтение image descriptor и metadata
669
+ Git/проектов; SBOM preflight может загрузить закреплённые инструменты во
670
+ временную папку и выполнить registry login с временным auth-файлом.
671
+ Временные файлы удаляются; исходники, lockfiles и существующие артефакты
672
+ сохраняются. При неполных входных отчётах dry завершается с ошибкой.
673
+
674
+ `--silence` скрывает только сообщения об успешно пройденных предпроверках.
675
+ Ошибки, предупреждения, результаты команды и итог dry остаются видимыми.
676
+ Это тот же смысл флага, что у release/hotfix команд. Без dry выполняются
677
+ обычные действия и сохраняются прежние коды завершения 0/1/2.
678
+
679
+ `--no-verify` пропускает предварительные проверки доступов GitLab/YouTrack,
680
+ registry и соответствия tracker ref. Команда сразу переходит к своим действиям:
681
+ аудиту, копированию LICENSE, работе с каталогами, задачами или исправлениям.
682
+ Загрузка входных отчётов, аутентификация для операций, проверка целостности
683
+ артефактов и проверочные команды после исправления остаются частью действия.
684
+ Пропущенные preflight не получают статус «проверено» в отчёте.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spectrum-cli",
3
- "version": "5.0.2",
3
+ "version": "6.0.0",
4
4
  "description": "🚀 Modern CLI for development workflow automation - release management, versioning, and changelog generation",
5
5
  "main": "index.js",
6
6
  "bin": {
@@ -49,7 +49,9 @@
49
49
  "url": "https://github.com/dnwSilver/spectrum-cli/issues"
50
50
  },
51
51
  "dependencies": {
52
- "commander": "^11.1.0"
52
+ "commander": "^11.1.0",
53
+ "semver": "7.8.5",
54
+ "yaml": "2.9.1"
53
55
  },
54
56
  "engines": {
55
57
  "node": ">=20.0.0",