@7n/rules-ci-github 1.9.0 → 1.9.2
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 +14 -0
- package/package.json +1 -1
- package/rules/abie/clean_merged_ignore_branches/docs/fix-clean_merged_ignore_branches.md +15 -10
- package/rules/abie/clean_merged_ignore_branches/docs/index.md +2 -2
- package/rules/abie/clean_merged_ignore_branches/fix-clean_merged_ignore_branches.mjs +10 -0
- package/rules/docker/lint_docker_yml/docs/fix-lint_docker_yml.md +13 -10
- package/rules/docker/lint_docker_yml/docs/index.md +2 -2
- package/rules/docker/lint_docker_yml/fix-lint_docker_yml.mjs +10 -0
- package/rules/ga/clean_ga_workflows/docs/fix-clean_ga_workflows.md +12 -12
- package/rules/ga/clean_ga_workflows/fix-clean_ga_workflows.mjs +10 -0
- package/rules/ga/clean_merged_branch/docs/fix-clean_merged_branch.md +17 -8
- package/rules/ga/clean_merged_branch/fix-clean_merged_branch.mjs +10 -0
- package/rules/ga/git_ai/docs/fix-git_ai.md +18 -8
- package/rules/ga/git_ai/fix-git_ai.mjs +10 -0
- package/rules/ga/git_ai/template/git-ai.yml.snippet.yml +1 -1
- package/rules/ga/lint_ga/docs/fix-lint_ga.md +16 -10
- package/rules/ga/lint_ga/fix-lint_ga.mjs +10 -0
- package/rules/ga/lint_repo_yml/docs/fix-lint_repo_yml.md +20 -8
- package/rules/ga/lint_repo_yml/fix-lint_repo_yml.mjs +10 -0
- package/rules/ga/service_deploy_workflow/docs/fix-service_deploy_workflow.md +38 -11
- package/rules/ga/service_deploy_workflow/fix-service_deploy_workflow.mjs +6 -0
- package/rules/ga/vscode_settings/docs/fix-vscode_settings.md +15 -8
- package/rules/ga/vscode_settings/fix-vscode_settings.mjs +10 -0
- package/rules/ga/zizmor_yml/docs/fix-zizmor_yml.md +14 -9
- package/rules/ga/zizmor_yml/fix-zizmor_yml.mjs +10 -0
- package/rules/js/lint_js_yml/docs/fix-lint_js_yml.md +16 -8
- package/rules/js/lint_js_yml/docs/index.md +2 -2
- package/rules/js/lint_js_yml/fix-lint_js_yml.mjs +10 -0
- package/rules/k8s/lint_k8s_yml/docs/fix-lint_k8s_yml.md +15 -10
- package/rules/k8s/lint_k8s_yml/docs/index.md +2 -2
- package/rules/k8s/lint_k8s_yml/fix-lint_k8s_yml.mjs +10 -0
- package/rules/k8s/lint_k8s_yml/template/lint-k8s.yml.snippet.yml +1 -1
- package/rules/npm-module/npm_publish_yml/docs/fix-npm_publish_yml.md +19 -9
- package/rules/npm-module/npm_publish_yml/docs/index.md +2 -2
- package/rules/npm-module/npm_publish_yml/fix-npm_publish_yml.mjs +10 -0
- package/rules/php/lint_php_yml/docs/fix-lint_php_yml.md +19 -9
- package/rules/php/lint_php_yml/docs/index.md +2 -2
- package/rules/php/lint_php_yml/fix-lint_php_yml.mjs +10 -0
- package/rules/python/lint_python_yml/docs/fix-lint_python_yml.md +21 -8
- package/rules/python/lint_python_yml/docs/index.md +2 -2
- package/rules/python/lint_python_yml/fix-lint_python_yml.mjs +6 -0
- package/rules/rust/lint_rust_yml/docs/fix-lint_rust_yml.md +19 -9
- package/rules/rust/lint_rust_yml/docs/index.md +2 -2
- package/rules/rust/lint_rust_yml/fix-lint_rust_yml.mjs +6 -0
- package/rules/rust/toolchain_cache/docs/index.md +2 -4
- package/rules/rust/toolchain_cache/docs/main.md +23 -35
- package/rules/rust/toolchain_cache/main.mjs +4 -0
- package/rules/security/lint_security_yml/docs/fix-lint_security_yml.md +12 -10
- package/rules/security/lint_security_yml/docs/index.md +2 -2
- package/rules/security/lint_security_yml/fix-lint_security_yml.mjs +6 -0
- package/rules/style/lint_style_yml/docs/fix-lint_style_yml.md +10 -9
- package/rules/style/lint_style_yml/docs/index.md +2 -2
- package/rules/style/lint_style_yml/fix-lint_style_yml.mjs +6 -0
- package/rules/text/lint_text/docs/fix-lint_text.md +13 -8
- package/rules/text/lint_text/docs/index.md +2 -2
- package/rules/text/lint_text/fix-lint_text.mjs +6 -0
|
@@ -3,29 +3,56 @@ type: JS Module
|
|
|
3
3
|
title: fix-service_deploy_workflow.mjs
|
|
4
4
|
resource: plugins/ci-github/rules/ga/service_deploy_workflow/fix-service_deploy_workflow.mjs
|
|
5
5
|
docgen:
|
|
6
|
-
crc:
|
|
6
|
+
crc: 429bfe4c
|
|
7
|
+
model: openai-codex/gpt-5.5
|
|
8
|
+
tier: cloud-avg
|
|
9
|
+
score: 100
|
|
10
|
+
issues: judge-refine:kept-original,judge:inaccurate:0.99
|
|
11
|
+
judgeModel: openai-codex/gpt-5.4-mini
|
|
7
12
|
---
|
|
8
13
|
|
|
9
14
|
## Огляд
|
|
10
15
|
|
|
11
|
-
|
|
16
|
+
T0-автоміграція приводить `.github/workflows/deploy-*.yml` сервісів до канону ADR 260718-0835: `plan → lint-<domain> → deploy` із runtime outputs для доменних гейтів. Вона додає `plan` із `bunx n-rules ci plan --path <svc> --github`, `id: plan` та outputs-мапінгом доменів + `any`, щоб умови `needs.plan.outputs.*` мали значення під час виконання.
|
|
12
17
|
|
|
13
|
-
|
|
18
|
+
Файл існує як fix-режим для workflow, що ще мають легасі lint або неповний domain-style wiring, зберігаючи валідні без-lint workflow без примусового переходу на gate. `bootstrap: true` є окремим opt-in для workflow без lint-джоб: він створює доменні lint-гейти з нуля й підключає до них безумовну вхідну job.
|
|
14
19
|
|
|
15
|
-
|
|
20
|
+
Міграція працює fail-safe: перехоплює помилки, не кидає винятків назовні та в окремих збійних сценаріях може повертати `null`.
|
|
16
21
|
|
|
17
22
|
## Поведінка
|
|
18
23
|
|
|
19
|
-
|
|
20
|
-
|
|
24
|
+
`migrateWorkflowFile` читає GitHub Actions deploy-workflow, визначає сервісний каталог і активні домени, після чого детерміновано приводить jobs до канону `plan → lint-<domain> → deploy`. Дані беруться з наявних jobs, lint-команд і workflow paths; результатом є оновлений YAML-файл із мінімальними змінами незачеплених частин.
|
|
25
|
+
|
|
26
|
+
Потік міграції спочатку формує або доповнює `plan` з outputs для доменів і `any`, щоб downstream-гейти могли коректно читати `needs.plan.outputs.*` під час runtime. Далі легасі lint-job без домену замінюється на набір per-domain jobs, а вже наявні domain-style lint jobs добираються до канону: залежність від `plan`, умовний запуск за outputs, режим без auto-fix, повна історія checkout і підготовчі кроки.
|
|
27
|
+
|
|
28
|
+
Після створення або оновлення lint jobs міграція перешиває залежності інших jobs з легасі-імен на нові lint jobs. Якщо deploy-job залежить від умовних lint jobs, вона отримує Skipped-толерантний gate, щоб пропущений нерелевантний домен не блокував деплой, але failure залишався блокувальним. Наявний нетривіальний `if` не перезаписується, бо це вважається ручним рішенням.
|
|
29
|
+
|
|
30
|
+
Опційний bootstrap-режим у `migrateWorkflowFile` застосовується лише як явний opt-in для workflow без lint jobs: він створює per-domain lint jobs з нуля та підключає безумовну вхідну deploy-job до `plan` і всіх lint jobs. Звичайний fix-режим цього не робить, бо workflow без lint-гейта є валідним станом, а перехід на gate має бути свідомим рішенням команди.
|
|
31
|
+
|
|
32
|
+
Зміни виконуються через YAML document-модель, тому порядок jobs керовано оновлюється, а коментарі й форматування незачеплених ділянок зберігаються. Помилки обробляються fail-safe: міграція не кидає винятки назовні і за неможливості безпечно визначити потрібні дані не виконує небезпечний rewrite.
|
|
33
|
+
|
|
34
|
+
`patterns` підключає цю міграцію до правила fix для deploy-workflow файлів і застосовує звичайний режим без bootstrap. Під час обходу свідомо пропускаються `.github` і `.git`, щоб не аналізувати службові каталоги як сервісні піддерева.
|
|
21
35
|
|
|
22
36
|
## Публічний API
|
|
23
37
|
|
|
24
|
-
-
|
|
25
|
-
|
|
38
|
+
- migrateWorkflowFile — Мігрує один deploy-workflow до канону. Повертає true, якщо файл змінено.
|
|
39
|
+
|
|
40
|
+
`bootstrap: true` — свідоме розширення поза звичайним fix-режимом: для
|
|
41
|
+
deploy-workflow БЕЗ жодної lint-джоби (валідний as-is за рего-концерном,
|
|
42
|
+
деталі — service_deploy_workflow.rego) створює lint-<domain> джоби з нуля
|
|
43
|
+
(за `relevantDomains` піддерева сервісу) і підключає вхідну/термінальну
|
|
44
|
+
джобу без `needs` до plan + усіх lint-джоб. Це саме «свідоме рішення
|
|
45
|
+
перейти на гейт», про яке говорить коментар концерну — bootstrap лише
|
|
46
|
+
виконує його механічно, а не ухвалює автоматично (звичайний
|
|
47
|
+
`n-rules lint --fix` bootstrap не викликає: patterns[0].apply завжди
|
|
48
|
+
викликається без bootstrap).
|
|
49
|
+
- patterns — Один детермінований патерн: для кожного workflow-файлу з порушеннями запускає
|
|
50
|
+
`migrateWorkflowFile` без bootstrap (plan-джоба, per-domain lint-джоби,
|
|
51
|
+
перешивка needs). Помилка міграції окремого файлу не валить прогін — deny
|
|
52
|
+
лишається детектору до ручного фіксу.
|
|
26
53
|
|
|
27
54
|
## Гарантії поведінки
|
|
28
55
|
|
|
29
|
-
- Перехоплює помилки
|
|
30
|
-
-
|
|
31
|
-
-
|
|
56
|
+
- Перехоплює помилки і не пропускає винятків назовні (fail-safe).
|
|
57
|
+
- За певних помилок повертає порожнє значення (напр. `null`) замість винятку.
|
|
58
|
+
- Свідомо пропускає шляхи: `.github`, `.git`.
|
|
@@ -448,6 +448,12 @@ export async function migrateWorkflowFile(absPath, cwd, opts = {}) {
|
|
|
448
448
|
return true
|
|
449
449
|
}
|
|
450
450
|
|
|
451
|
+
/**
|
|
452
|
+
* Один детермінований патерн: для кожного workflow-файлу з порушеннями запускає
|
|
453
|
+
* `migrateWorkflowFile` без bootstrap (plan-джоба, per-domain lint-джоби,
|
|
454
|
+
* перешивка needs). Помилка міграції окремого файлу не валить прогін — deny
|
|
455
|
+
* лишається детектору до ручного фіксу.
|
|
456
|
+
*/
|
|
451
457
|
export const patterns = [
|
|
452
458
|
{
|
|
453
459
|
id: 'ga-service-workflow-canon-migrate',
|
|
@@ -3,24 +3,31 @@ type: JS Module
|
|
|
3
3
|
title: fix-vscode_settings.mjs
|
|
4
4
|
resource: plugins/ci-github/rules/ga/vscode_settings/fix-vscode_settings.mjs
|
|
5
5
|
docgen:
|
|
6
|
-
crc:
|
|
6
|
+
crc: 39ecd7e7
|
|
7
7
|
model: openai-codex/gpt-5.4-mini
|
|
8
|
+
tier: cloud-min
|
|
8
9
|
score: 100
|
|
9
|
-
issues: judge:inaccurate:0.97
|
|
10
10
|
judgeModel: openai-codex/gpt-5.4-mini
|
|
11
11
|
---
|
|
12
12
|
|
|
13
13
|
## Огляд
|
|
14
14
|
|
|
15
|
-
`patterns`
|
|
15
|
+
`patterns` задає спільні налаштування VS Code для консюмер-репо відповідно до канонічного шаблону концерну `vscode_settings`. Це потрібно, щоб однаковий базовий набір налаштувань застосовувався узгоджено в усіх споживачах цього шаблону.
|
|
16
16
|
|
|
17
17
|
## Поведінка
|
|
18
18
|
|
|
19
|
-
1. `patterns`
|
|
20
|
-
2. `
|
|
21
|
-
3. `
|
|
22
|
-
4.
|
|
19
|
+
1. `patterns` задає один канонічний сценарій вирівнювання спільних VS Code-налаштувань у консюмер-репо з корпоративним шаблоном для `settings.json`.
|
|
20
|
+
2. Якщо цільовий `settings.json` відсутній, він створюється на основі канонічного шаблону.
|
|
21
|
+
3. Якщо `settings.json` уже існує, з нього зберігаються всі значення поза шаблоном, а канонічні налаштування концерну мають пріоритет і доповнюють або оновлюють спільну конфігурацію.
|
|
22
|
+
4. Це гарантує, що репозиторії отримують однакову базову поведінку VS Code без втрати локальних несуперечливих налаштувань.
|
|
23
|
+
|
|
24
|
+
## Публічний API
|
|
25
|
+
|
|
26
|
+
- patterns — Один детермінований патерн: deep-merge канонічного snippet-а концерну в
|
|
27
|
+
`.vscode/settings.json` консюмер-репо — відсутні ключі додаються, канонічні
|
|
28
|
+
значення мають пріоритет, ключі поза шаблоном не чіпаються; якщо файлу
|
|
29
|
+
немає — створюється зі snippet-а.
|
|
23
30
|
|
|
24
31
|
## Гарантії поведінки
|
|
25
32
|
|
|
26
|
-
-
|
|
33
|
+
- Власних операцій запису (ФС/БД) у файлі немає; виклики імпортованих модулів можуть писати.
|
|
@@ -1,5 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* T0-фікс концерну vscode_settings: приводить спільні налаштування VS Code
|
|
3
|
+
* у консюмер-репо до канонічного шаблону концерну.
|
|
4
|
+
*/
|
|
1
5
|
import { createTemplateFixPattern } from '@7n/rules/scripts/lib/fix/template-deep-merge.mjs'
|
|
2
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Один детермінований патерн: deep-merge канонічного snippet-а концерну в
|
|
9
|
+
* `.vscode/settings.json` консюмер-репо — відсутні ключі додаються, канонічні
|
|
10
|
+
* значення мають пріоритет, ключі поза шаблоном не чіпаються; якщо файлу
|
|
11
|
+
* немає — створюється зі snippet-а.
|
|
12
|
+
*/
|
|
3
13
|
export const patterns = [
|
|
4
14
|
createTemplateFixPattern({ id: 'ga-vscode_settings-template', targetPath: '.vscode/settings.json' })
|
|
5
15
|
]
|
|
@@ -3,26 +3,31 @@ type: JS Module
|
|
|
3
3
|
title: fix-zizmor_yml.mjs
|
|
4
4
|
resource: plugins/ci-github/rules/ga/zizmor_yml/fix-zizmor_yml.mjs
|
|
5
5
|
docgen:
|
|
6
|
-
crc:
|
|
6
|
+
crc: 9892e20a
|
|
7
7
|
model: openai-codex/gpt-5.4-mini
|
|
8
8
|
tier: cloud-min
|
|
9
9
|
score: 100
|
|
10
|
-
issues: judge:inaccurate:0.98
|
|
11
10
|
judgeModel: openai-codex/gpt-5.4-mini
|
|
12
11
|
---
|
|
13
12
|
|
|
14
13
|
## Огляд
|
|
15
14
|
|
|
16
|
-
`patterns`
|
|
15
|
+
`patterns` приводить `.github/zizmor.yml` до канонічного шаблону концерну для `zizmor`, щоб консюмер-репо залишалося узгодженим зі стандартизованим конфігом.
|
|
17
16
|
|
|
18
17
|
## Поведінка
|
|
19
18
|
|
|
20
|
-
1. `patterns`
|
|
21
|
-
2.
|
|
22
|
-
3.
|
|
23
|
-
4.
|
|
19
|
+
1. `patterns` визначає один детермінований шаблон для вирівнювання `.github/zizmor.yml` із канонічним концерновим конфігом.
|
|
20
|
+
2. Якщо цільовий файл відсутній, `patterns` ініціалізує його з канонічного snippet-а.
|
|
21
|
+
3. Якщо файл уже існує, `patterns` додає відсутні ключі та зберігає канонічні значення як пріоритетні.
|
|
22
|
+
4. `patterns` не чіпає коментарі й інші ключі поза шаблоном.
|
|
23
|
+
|
|
24
|
+
## Публічний API
|
|
25
|
+
|
|
26
|
+
- patterns — Один детермінований патерн: deep-merge канонічного snippet-а концерну в
|
|
27
|
+
`.github/zizmor.yml` консюмер-репо — відсутні ключі додаються, канонічні
|
|
28
|
+
значення мають пріоритет, коментарі й ключі поза шаблоном не чіпаються;
|
|
29
|
+
якщо файлу немає — створюється зі snippet-а.
|
|
24
30
|
|
|
25
31
|
## Гарантії поведінки
|
|
26
32
|
|
|
27
|
-
-
|
|
28
|
-
- Свідомо пропускає шляхи: `.github`, `.git`.
|
|
33
|
+
- Власних операцій запису (ФС/БД) у файлі немає; виклики імпортованих модулів можуть писати.
|
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* T0-фікс концерну zizmor_yml: приводить конфіг сканера безпеки zizmor
|
|
3
|
+
* у консюмер-репо до канонічного шаблону концерну.
|
|
4
|
+
*/
|
|
1
5
|
import { createTemplateFixPattern } from '@7n/rules/scripts/lib/fix/template-deep-merge.mjs'
|
|
2
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Один детермінований патерн: deep-merge канонічного snippet-а концерну в
|
|
9
|
+
* `.github/zizmor.yml` консюмер-репо — відсутні ключі додаються, канонічні
|
|
10
|
+
* значення мають пріоритет, коментарі й ключі поза шаблоном не чіпаються;
|
|
11
|
+
* якщо файлу немає — створюється зі snippet-а.
|
|
12
|
+
*/
|
|
3
13
|
export const patterns = [createTemplateFixPattern({ id: 'ga-zizmor_yml-template', targetPath: '.github/zizmor.yml' })]
|
|
@@ -3,25 +3,33 @@ type: JS Module
|
|
|
3
3
|
title: fix-lint_js_yml.mjs
|
|
4
4
|
resource: plugins/ci-github/rules/js/lint_js_yml/fix-lint_js_yml.mjs
|
|
5
5
|
docgen:
|
|
6
|
-
crc:
|
|
6
|
+
crc: e0152cf2
|
|
7
7
|
model: openai-codex/gpt-5.4-mini
|
|
8
|
+
tier: cloud-min
|
|
8
9
|
score: 100
|
|
9
|
-
issues: judge:inaccurate:0.
|
|
10
|
+
issues: 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
|
-
`patterns`
|
|
16
|
+
`patterns` приводить шлях `.github/workflows/lint-js.yml` до канонічного шаблону концерну, щоб workflow для js-лінту відповідав стандартному корпоративному оформленню.
|
|
16
17
|
|
|
17
18
|
## Поведінка
|
|
18
19
|
|
|
19
|
-
1. `patterns`
|
|
20
|
-
2.
|
|
21
|
-
3.
|
|
22
|
-
4.
|
|
20
|
+
1. `patterns` задає єдиний канонічний сценарій виправлення для CI-workflow лінту js-домену в репозиторіях-консюмерах.
|
|
21
|
+
2. Він узгоджує `.github/workflows/lint-js.yml` із шаблоном концерну: додає відсутні частини, зберігає канонічні значення як пріоритетні та не змінює сторонні коментарі й ключі поза шаблоном.
|
|
22
|
+
3. Якщо цільового файлу немає, `patterns` ініціює його створення з канонічного snippet-а.
|
|
23
|
+
4. Під час застосування механізм свідомо обходить `.github` і `.git`, щоб не зачіпати службові області поза цим сценарієм.
|
|
24
|
+
|
|
25
|
+
## Публічний API
|
|
26
|
+
|
|
27
|
+
- patterns — Один детермінований патерн: deep-merge канонічного snippet-а концерну в
|
|
28
|
+
`.github/workflows/lint-js.yml` консюмер-репо — відсутні ключі додаються,
|
|
29
|
+
канонічні значення мають пріоритет, коментарі й ключі поза шаблоном не
|
|
30
|
+
чіпаються; якщо файлу немає — створюється зі snippet-а.
|
|
23
31
|
|
|
24
32
|
## Гарантії поведінки
|
|
25
33
|
|
|
26
|
-
-
|
|
34
|
+
- Власних операцій запису (ФС/БД) у файлі немає; виклики імпортованих модулів можуть писати.
|
|
27
35
|
- Свідомо пропускає шляхи: `.github`, `.git`.
|
|
@@ -1,5 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* T0-фікс концерну lint_js_yml: приводить CI-workflow лінту js-домену
|
|
3
|
+
* у консюмер-репо до канонічного шаблону концерну.
|
|
4
|
+
*/
|
|
1
5
|
import { createTemplateFixPattern } from '@7n/rules/scripts/lib/fix/template-deep-merge.mjs'
|
|
2
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Один детермінований патерн: deep-merge канонічного snippet-а концерну в
|
|
9
|
+
* `.github/workflows/lint-js.yml` консюмер-репо — відсутні ключі додаються,
|
|
10
|
+
* канонічні значення мають пріоритет, коментарі й ключі поза шаблоном не
|
|
11
|
+
* чіпаються; якщо файлу немає — створюється зі snippet-а.
|
|
12
|
+
*/
|
|
3
13
|
export const patterns = [
|
|
4
14
|
createTemplateFixPattern({ id: 'js-lint_js_yml-template', targetPath: '.github/workflows/lint-js.yml' })
|
|
5
15
|
]
|
|
@@ -3,28 +3,33 @@ type: JS Module
|
|
|
3
3
|
title: fix-lint_k8s_yml.mjs
|
|
4
4
|
resource: plugins/ci-github/rules/k8s/lint_k8s_yml/fix-lint_k8s_yml.mjs
|
|
5
5
|
docgen:
|
|
6
|
-
crc:
|
|
7
|
-
model: openai-codex/gpt-5.
|
|
6
|
+
crc: e89c25eb
|
|
7
|
+
model: openai-codex/gpt-5.4-mini
|
|
8
|
+
tier: cloud-min
|
|
8
9
|
score: 100
|
|
9
|
-
issues: judge:inaccurate:0.98
|
|
10
|
+
issues: 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
|
-
|
|
16
|
+
Файл тримає канонічний сценарій оновлення CI workflow для лінту k8s-домену в consumer-репо, щоб `.github/workflows/lint-k8s.yml` приводився до шаблону концерну. Він існує, щоб звіряти workflow з канонічним snippet-ом концерну й застосовувати стандартний набір змін для цього сценарію, не виходячи за межі `.github` та `.git`.
|
|
16
17
|
|
|
17
18
|
## Поведінка
|
|
18
19
|
|
|
19
|
-
1. `patterns`
|
|
20
|
+
1. `patterns` задає єдиний канонічний сценарій виправлення для CI workflow лінту k8s-домену.
|
|
21
|
+
2. Під час застосування сценарію шаблон концерну зливається з `.github/workflows/lint-k8s.yml`: відсутні елементи додаються, а канонічні значення мають пріоритет.
|
|
22
|
+
3. Якщо цільового файлу немає, `patterns` ініціює його створення з канонічного snippet-а.
|
|
23
|
+
4. `patterns` навмисно не втручається в позатимплейтні ключі та коментарі, а також свідомо пропускає `.github` і `.git` як межі обробки.
|
|
20
24
|
|
|
21
|
-
|
|
25
|
+
## Публічний API
|
|
22
26
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
27
|
+
- patterns — Один детермінований патерн: deep-merge канонічного snippet-а концерну в
|
|
28
|
+
`.github/workflows/lint-k8s.yml` консюмер-репо — відсутні ключі додаються,
|
|
29
|
+
канонічні значення мають пріоритет, коментарі й ключі поза шаблоном не
|
|
30
|
+
чіпаються; якщо файлу немає — створюється зі snippet-а.
|
|
26
31
|
|
|
27
32
|
## Гарантії поведінки
|
|
28
33
|
|
|
29
|
-
-
|
|
34
|
+
- Власних операцій запису (ФС/БД) у файлі немає; виклики імпортованих модулів можуть писати.
|
|
30
35
|
- Свідомо пропускає шляхи: `.github`, `.git`.
|
|
@@ -1,5 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* T0-фікс концерну lint_k8s_yml: приводить CI-workflow лінту k8s-домену
|
|
3
|
+
* у консюмер-репо до канонічного шаблону концерну.
|
|
4
|
+
*/
|
|
1
5
|
import { createTemplateFixPattern } from '@7n/rules/scripts/lib/fix/template-deep-merge.mjs'
|
|
2
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Один детермінований патерн: deep-merge канонічного snippet-а концерну в
|
|
9
|
+
* `.github/workflows/lint-k8s.yml` консюмер-репо — відсутні ключі додаються,
|
|
10
|
+
* канонічні значення мають пріоритет, коментарі й ключі поза шаблоном не
|
|
11
|
+
* чіпаються; якщо файлу немає — створюється зі snippet-а.
|
|
12
|
+
*/
|
|
3
13
|
export const patterns = [
|
|
4
14
|
createTemplateFixPattern({ id: 'k8s-lint_k8s_yml-template', targetPath: '.github/workflows/lint-k8s.yml' })
|
|
5
15
|
]
|
|
@@ -37,7 +37,7 @@ jobs:
|
|
|
37
37
|
- name: Install kubescape
|
|
38
38
|
run: |
|
|
39
39
|
curl -s https://raw.githubusercontent.com/kubescape/kubescape/master/install.sh | /bin/bash
|
|
40
|
-
echo "$HOME/.kubescape/bin" >> $GITHUB_PATH
|
|
40
|
+
echo "$HOME/.kubescape/bin" >> "$GITHUB_PATH"
|
|
41
41
|
|
|
42
42
|
- name: Lint K8s
|
|
43
43
|
run: bunx n-rules lint k8s --no-fix
|
|
@@ -3,25 +3,35 @@ type: JS Module
|
|
|
3
3
|
title: fix-npm_publish_yml.mjs
|
|
4
4
|
resource: plugins/ci-github/rules/npm-module/npm_publish_yml/fix-npm_publish_yml.mjs
|
|
5
5
|
docgen:
|
|
6
|
-
crc:
|
|
7
|
-
model:
|
|
6
|
+
crc: b7913c3f
|
|
7
|
+
model: omlx/gemma-4-e4b-it-OptiQ-4bit
|
|
8
|
+
tier: local-min-retry
|
|
8
9
|
score: 100
|
|
9
|
-
issues: judge:
|
|
10
|
+
issues: judge:error
|
|
10
11
|
judgeModel: openai-codex/gpt-5.4-mini
|
|
11
12
|
---
|
|
12
13
|
|
|
13
14
|
## Огляд
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
Приводить конфігураційний файл `.github/workflows/npm-publish.yml` до канонічного шаблону концерну для забезпечення уніфікованого процесу публікації npm-пакетів у репозиторії-споживачі. Функція `patterns` забезпечує, що робочий процес включає необхідні параметри, при цьому ігноруючи каталоги `.github` та `.git`.
|
|
16
17
|
|
|
17
18
|
## Поведінка
|
|
18
19
|
|
|
19
|
-
1.
|
|
20
|
-
2.
|
|
21
|
-
3.
|
|
22
|
-
4.
|
|
20
|
+
1. Приводить робочий процес (workflow) публікації npm-пакета в консюмер-репо до канонічного шаблону концерну шляхом застосування детермінованого патерну.
|
|
21
|
+
2. Патерн працює з файлом `.github/workflows/npm-publish.yml`.
|
|
22
|
+
3. Відсутні ключі в файлі додаються, а канонічні значення мають пріоритет; коментарі та ключі поза шаблоном не змінюються.
|
|
23
|
+
4. Якщо вказаний файл не існує, він створюється на основі канонічного snippet-а.
|
|
24
|
+
5. Процес не перевіряє шляхи `.github` та `.git`.
|
|
25
|
+
6. Результат дії визначається масивом, експортованим через `patterns`.
|
|
26
|
+
|
|
27
|
+
## Публічний API
|
|
28
|
+
|
|
29
|
+
- patterns — Один детермінований патерн: deep-merge канонічного snippet-а концерну в
|
|
30
|
+
`.github/workflows/npm-publish.yml` консюмер-репо — відсутні ключі додаються,
|
|
31
|
+
канонічні значення мають пріоритет, коментарі й ключі поза шаблоном не
|
|
32
|
+
чіпаються; якщо файлу немає — створюється зі snippet-а.
|
|
23
33
|
|
|
24
34
|
## Гарантії поведінки
|
|
25
35
|
|
|
26
|
-
-
|
|
36
|
+
- Власних операцій запису (ФС/БД) у файлі немає; виклики імпортованих модулів можуть писати.
|
|
27
37
|
- Свідомо пропускає шляхи: `.github`, `.git`.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
type: Directory Index
|
|
3
|
-
title:
|
|
4
|
-
resource:
|
|
3
|
+
title: plugins/ci-github/rules/npm-module/npm_publish_yml
|
|
4
|
+
resource: plugins/ci-github/rules/npm-module/npm_publish_yml/
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
| Файл | Тип |
|
|
@@ -1,5 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* T0-фікс концерну npm_publish_yml: приводить workflow публікації npm-пакета
|
|
3
|
+
* у консюмер-репо до канонічного шаблону концерну.
|
|
4
|
+
*/
|
|
1
5
|
import { createTemplateFixPattern } from '@7n/rules/scripts/lib/fix/template-deep-merge.mjs'
|
|
2
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Один детермінований патерн: deep-merge канонічного snippet-а концерну в
|
|
9
|
+
* `.github/workflows/npm-publish.yml` консюмер-репо — відсутні ключі додаються,
|
|
10
|
+
* канонічні значення мають пріоритет, коментарі й ключі поза шаблоном не
|
|
11
|
+
* чіпаються; якщо файлу немає — створюється зі snippet-а.
|
|
12
|
+
*/
|
|
3
13
|
export const patterns = [
|
|
4
14
|
createTemplateFixPattern({
|
|
5
15
|
id: 'npm-module-npm_publish_yml-template',
|
|
@@ -3,25 +3,35 @@ type: JS Module
|
|
|
3
3
|
title: fix-lint_php_yml.mjs
|
|
4
4
|
resource: plugins/ci-github/rules/php/lint_php_yml/fix-lint_php_yml.mjs
|
|
5
5
|
docgen:
|
|
6
|
-
crc:
|
|
7
|
-
model:
|
|
6
|
+
crc: 0699f2b1
|
|
7
|
+
model: omlx/gemma-4-e4b-it-OptiQ-4bit
|
|
8
|
+
tier: local-min
|
|
8
9
|
score: 100
|
|
9
|
-
issues: judge:
|
|
10
|
+
issues: judge:error
|
|
10
11
|
judgeModel: openai-codex/gpt-5.4-mini
|
|
11
12
|
---
|
|
12
13
|
|
|
13
14
|
## Огляд
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
Приводить конфігурації CI-workflow для PHP-домену у консюмер-репозиторії до канонічного шаблону концерну `lint_php_yml`. Гарантує відповідність YAML-файлів лінту встановленому стандарту, додаючи відсутні ключі та застосовуючи канонічні значення, зберігаючи при цьому вихідні коментарі та ключі, що не входять до шаблону. Це забезпечує єдність збірки та лінтування в системі.
|
|
16
17
|
|
|
17
18
|
## Поведінка
|
|
18
19
|
|
|
19
|
-
1.
|
|
20
|
-
2. `patterns`
|
|
21
|
-
3.
|
|
22
|
-
4.
|
|
20
|
+
1. Перевіряє файли, що знаходяться у каталозі `.github/workflows/lint-php.yml`.
|
|
21
|
+
2. Використовує `patterns` для застосування канонічного шаблону концерну `lint_php_yml` до цільового файлу.
|
|
22
|
+
3. При застосуванні шаблону відсутні ключі додаються, а канонічні значення мають пріоритет.
|
|
23
|
+
4. Коментарі та ключі, які знаходяться поза шаблоном, залишаються без змін.
|
|
24
|
+
5. Якщо файл цільового шляху відсутній, він створюється на основі наданого snippet-а.
|
|
25
|
+
6. Ігнорує шляхи `.github` та `.git` під час перевірки.
|
|
26
|
+
|
|
27
|
+
## Публічний API
|
|
28
|
+
|
|
29
|
+
- patterns — Один детермінований патерн: deep-merge канонічного snippet-а концерну в
|
|
30
|
+
`.github/workflows/lint-php.yml` консюмер-репо — відсутні ключі додаються,
|
|
31
|
+
канонічні значення мають пріоритет, коментарі й ключі поза шаблоном не
|
|
32
|
+
чіпаються; якщо файлу немає — створюється зі snippet-а.
|
|
23
33
|
|
|
24
34
|
## Гарантії поведінки
|
|
25
35
|
|
|
26
|
-
-
|
|
36
|
+
- Власних операцій запису (ФС/БД) у файлі немає; виклики імпортованих модулів можуть писати.
|
|
27
37
|
- Свідомо пропускає шляхи: `.github`, `.git`.
|
|
@@ -1,5 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* T0-фікс концерну lint_php_yml: приводить CI-workflow лінту php-домену
|
|
3
|
+
* у консюмер-репо до канонічного шаблону концерну.
|
|
4
|
+
*/
|
|
1
5
|
import { createTemplateFixPattern } from '@7n/rules/scripts/lib/fix/template-deep-merge.mjs'
|
|
2
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Один детермінований патерн: deep-merge канонічного snippet-а концерну в
|
|
9
|
+
* `.github/workflows/lint-php.yml` консюмер-репо — відсутні ключі додаються,
|
|
10
|
+
* канонічні значення мають пріоритет, коментарі й ключі поза шаблоном не
|
|
11
|
+
* чіпаються; якщо файлу немає — створюється зі snippet-а.
|
|
12
|
+
*/
|
|
3
13
|
export const patterns = [
|
|
4
14
|
createTemplateFixPattern({ id: 'php-lint_php_yml-template', targetPath: '.github/workflows/lint-php.yml' })
|
|
5
15
|
]
|
|
@@ -3,24 +3,37 @@ type: JS Module
|
|
|
3
3
|
title: fix-lint_python_yml.mjs
|
|
4
4
|
resource: plugins/ci-github/rules/python/lint_python_yml/fix-lint_python_yml.mjs
|
|
5
5
|
docgen:
|
|
6
|
-
crc:
|
|
7
|
-
model: openai-codex/gpt-5.
|
|
6
|
+
crc: 525f6959
|
|
7
|
+
model: openai-codex/gpt-5.5
|
|
8
|
+
tier: cloud-avg
|
|
8
9
|
score: 100
|
|
9
|
-
issues: judge:
|
|
10
|
+
issues: judge:error
|
|
10
11
|
judgeModel: openai-codex/gpt-5.4-mini
|
|
11
12
|
---
|
|
12
13
|
|
|
13
14
|
## Огляд
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
Файл декларує автофікс для `python/lint_python_yml`: scaffold відсутнього `.github/workflows/lint-python.yml` з канонічного шаблону правила та `template-deep-merge` для наявного workflow. Він потрібен, щоб дописувати лише канонічні поля для Python lint у GitHub Actions і зберігати локальні налаштування проєкту.
|
|
17
|
+
|
|
18
|
+
Публічна точка входу: `patterns`. Свідомо пропущені шляхи: `.github`, `.git`. Власних операцій запису у файлі немає.
|
|
16
19
|
|
|
17
20
|
## Поведінка
|
|
18
21
|
|
|
19
|
-
1. `patterns`
|
|
20
|
-
|
|
21
|
-
|
|
22
|
+
1. `patterns` оголошує автофікс для правила `python/lint_python_yml`, щоб репозиторій отримував канонічний GitHub Actions workflow для Python lint.
|
|
23
|
+
|
|
24
|
+
2. Якщо `.github/workflows/lint-python.yml` відсутній, автофікс має створити його з шаблону правила.
|
|
25
|
+
|
|
26
|
+
3. Якщо workflow уже існує, автофікс має доповнити його лише канонічними полями правила, не прибираючи локальні налаштування проєкту.
|
|
27
|
+
|
|
28
|
+
4. Правило свідомо не обходить службові шляхи `.github` і `.git`, але працює з цільовим workflow-файлом як із винятком для підтримки потрібної CI-конфігурації.
|
|
29
|
+
|
|
30
|
+
5. Файл лише декларує поведінку автофікса через `patterns`; власних операцій запису не виконує.
|
|
31
|
+
|
|
32
|
+
## Публічний API
|
|
33
|
+
|
|
34
|
+
- patterns — Фікс-патерни концерну: один template-deep-merge запис для `.github/workflows/lint-python.yml`.
|
|
22
35
|
|
|
23
36
|
## Гарантії поведінки
|
|
24
37
|
|
|
25
|
-
-
|
|
38
|
+
- Власних операцій запису (ФС/БД) у файлі немає; виклики імпортованих модулів можуть писати.
|
|
26
39
|
- Свідомо пропускає шляхи: `.github`, `.git`.
|