@7n/rules-ci-azure 1.4.2 → 1.4.4

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
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.4.4] - 2026-07-22
4
+
5
+ ### Changed
6
+
7
+ - doc_comments rollout: header-JSDoc у vitest.config (T0 promote)
8
+ - doc_comments rollout: header/export JSDoc у конфігах demo
9
+ - doc_comments rollout: header-JSDoc у vitest.config
10
+
11
+ ## [1.4.3] - 2026-07-19
12
+
13
+ ### Changed
14
+
15
+ - release: @7n/rules@1.27.0, @7n/rules-lang-js@0.3.0, @7n/rules-lang-python@0.5.1, @7n/rules-lang-rust@0.5.1
16
+
3
17
  ## [1.4.2] - 2026-07-18
4
18
 
5
19
  ### Changed
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@7n/rules-ci-azure",
3
- "version": "1.4.2",
3
+ "version": "1.4.4",
4
4
  "description": "Плагін @7n/rules: канон Azure Pipelines (azure-pipelines.yml) — структура, lint-степ, VS Code",
5
5
  "keywords": [
6
6
  "azure-pipelines",
@@ -3,26 +3,35 @@ type: JS Module
3
3
  title: fix-service_deploy_pipeline.mjs
4
4
  resource: plugins/ci-azure/rules/azure-pipelines/service_deploy_pipeline/fix-service_deploy_pipeline.mjs
5
5
  docgen:
6
- crc: 0080ec86
6
+ crc: bf24b078
7
7
  model: openai-codex/gpt-5.4-mini
8
- score: 100
9
- issues: judge:inaccurate:0.99
8
+ tier: cloud-min
9
+ score: 95
10
+ issues: anchor-miss:https://bun.sh/install,judge-refine:kept-original,judge:inaccurate:0.98
10
11
  judgeModel: openai-codex/gpt-5.4-mini
11
12
  ---
12
13
 
13
14
  ## Огляд
14
15
 
15
- Файл існує для автоматичного переведення legacy `.azurepipelines/**.yml` у сервіс-канон ADR 260718-0835: він детерміновано переписує pipeline-и, де `trigger.paths.include` не відповідає формі `plan → lint_<domain> → deploy`, бо `lint --path` у `@7n/rules` 1.17 змінив семантику без major-бампа; `plan` додається через `bunx n-rules ci plan --path <svc> --azure`, а `lint_<key>` визначаються за файлами піддерева сервісу тими самими glob-ами, що й `ci plan`. Міграція зберігає коментарі та незачеплене форматування завдяки мутаціям через YAML Document API (`setIn`/`splice`). Також вона підшиває потрібні `dependsOn` і `condition` для нових lint-джоб і не перезаписує нетривіальний `condition`. Файл працює fail-safe: не кидає винятків назовні й за окремих помилок повертає порожнє значення замість exception.
16
+ Фіксер для T0-автоміграції легасі service-pipeline-ів до канону з ADR 260718-0835: він переписує `.azurepipelines/**.yml` з `trigger.paths.include`, що не відповідають формі plan → lint_<domain> → deploy і порушують rego-концерн `service_deploy_pipeline`. Через зміну семантики `n-rules lint --path` у `@7n/rules 1.17` він одразу переводить pipeline у новий канон замість ручної міграції 18 efes-пайплайнів.
17
+
18
+ Під час перепису додається `plan` як prep + `bunx n-rules ci plan --path <svc> --azure` (`ci plan --path <svc> --azure`), legacy job з `n-rules lint --path <svc>` замінюється на `lint_<key>` за доменами, визначеними через `computeActiveDomains/domainKey`, а wiring для lint-джоб додає `dependsOn: plan`, condition по outputs, `--no-fix` і `fetchDepth: 0`. Залежності інших job-ів перешиваються з legacy-імені на нові lint-джоби, а job-и з прямими deps на conditional lint-джоби без власного condition отримують Skipped-толерантний канон (`not` + `in`).
19
+
20
+ Власний `condition` не перезаписується, якщо він нетривіальний, а `- template:` розкладка не мігрується, бо фіксер працює лише з розгорнутими job-ами. `patterns` звужує скоуп до pipeline-файлів, чий `trigger.paths.include` відповідає цьому сценарію міграції.
16
21
 
17
22
  ## Поведінка
18
23
 
19
- - `migratePipelineFile` Мігрує один `.azurepipelines/**.yml` із `trigger.paths.include` до сервіс-канону: за потреби додає `plan`, замінює legacy `lint`-джоби на per-domain `lint_<key>`, підшиває `dependsOn`/`condition` і `--no-fix`, зберігаючи коментарі та форматування; якщо файл поза скоупом, `null` або міграція не вдається, повертає `false` без винятку назовні.
20
- - `patterns` — Описує rule-pattern, який знаходить порушені service pipeline-и та застосовує автоматичну міграцію до кожного знайденого файлу; помилки окремих файлів перехоплює, а результатом повертає список змінених файлів і повідомлення про кількість мігрованих pipeline-ів.
24
+ `migratePipelineFile` запускає fail-safe міграцію одного Azure pipeline-файлу: спочатку розбирає документ і відсіює файли поза скоупом, далі бере service path і всі jobs-послідовності, а потім поетапно переписує pipeline до канону plan lint_<domain> → deploy, зберігаючи коментарі та форматування незачеплених частин через `yaml` Document API. Якщо у файлі є легасі lint-джоба без домену, вона перетворюється на набір domain-style lint-джоб, а якщо вже є domain-style lint-джоби, їм добирається потрібний wiring для запуску після `plan`. Після цього залежності інших джоб перешиваються на нові lint-імена, і лише джоби з прямими залежностями на умовні lint-джоби отримують Skipped-толерантний condition, якщо власного condition ще немає. Нетривіальні умови не перезаписуються, а template-розкладка залишається недоторканою, бо фіксер працює тільки з уже розгорнутими jobs.
25
+
26
+ `patterns` задає критерій скоупу міграції: працюють лише pipeline-файли з `trigger.paths.include`, які мають перейти на сервісний канон і відповідають очікуваному перетворенню для service_deploy_pipeline. Саме цей відбір відмежовує файли, які можна безпечно переписати автоматично, від тих, де потрібне ручне рішення автора.
21
27
 
22
28
  ## Публічний API
23
29
 
24
- - migratePipelineFile — переносить один pipeline-файл у канонічний формат і сигналізує, чи були зміни.
25
- - patterns — T0-патерн для fix-конвеєра: розпізнає порушені service pipeline й застосовує міграцію.
30
+ - migratePipelineFile — Мігрує один pipeline-файл до канону. Повертає true, якщо файл змінено.
31
+ - patterns — Один детермінований патерн: для кожного pipeline-файлу з порушеннями запускає
32
+ `migratePipelineFile` (plan-джоба, per-domain lint-джоби, перешивка dependsOn).
33
+ Помилка міграції окремого файлу не валить прогін — deny лишається детектору
34
+ до ручного фіксу.
26
35
 
27
36
  ## Гарантії поведінки
28
37
 
@@ -404,6 +404,12 @@ export async function migratePipelineFile(absPath, cwd) {
404
404
  return true
405
405
  }
406
406
 
407
+ /**
408
+ * Один детермінований патерн: для кожного pipeline-файлу з порушеннями запускає
409
+ * `migratePipelineFile` (plan-джоба, per-domain lint-джоби, перешивка dependsOn).
410
+ * Помилка міграції окремого файлу не валить прогін — deny лишається детектору
411
+ * до ручного фіксу.
412
+ */
407
413
  export const patterns = [
408
414
  {
409
415
  id: 'azure-service-pipeline-canon-migrate',