mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-29 03:09:36 +00:00
ci: keep proof job names API-verifiable (#541)
Issue: #541 User-Visible: no
This commit is contained in:
@@ -47,7 +47,7 @@ jobs:
|
||||
# запись «job независимый: краснеет сам и не роняет остальные» продолжает
|
||||
# действовать — на уровне шагов, с той же гранулярностью в логе.
|
||||
preflight:
|
||||
name: "Предполётные проверки: документация, провенанс, процесс"
|
||||
name: "Предполёт: документация, провенанс, процесс"
|
||||
runs-on: ubuntu-latest
|
||||
# `actions: read` — чтение списка прогонов Validate (#388), `issues: read` —
|
||||
# проверка 8 процессного гейта. Права перечислены явно, потому что job
|
||||
|
||||
@@ -21,7 +21,7 @@ export const CI_PROOF_POLICIES = Object.freeze({
|
||||
});
|
||||
|
||||
const JOB_RULES = Object.freeze({
|
||||
preflight: [{ exact: 'Предполётные проверки: документация, провенанс, процесс', count: 1 }],
|
||||
preflight: [{ exact: 'Предполёт: документация, провенанс, процесс', count: 1 }],
|
||||
changes: [{ exact: 'Классификация изменённых файлов', count: 1 }],
|
||||
reuse: [{ exact: 'Переиспользование: это дерево уже проверено', count: 1 }],
|
||||
frontend: [{ exact: 'Фронтенд: типы, юниты, мутанты, синхрон бандла', count: 1 }],
|
||||
|
||||
@@ -11,7 +11,7 @@ export const SHA = 'a'.repeat(40);
|
||||
export const TREE = 'b'.repeat(40);
|
||||
|
||||
const names = {
|
||||
preflight: 'Предполётные проверки: документация, провенанс, процесс',
|
||||
preflight: 'Предполёт: документация, провенанс, процесс',
|
||||
changes: 'Классификация изменённых файлов',
|
||||
reuse: 'Переиспользование: это дерево уже проверено',
|
||||
frontend: 'Фронтенд: типы, юниты, мутанты, синхрон бандла',
|
||||
|
||||
@@ -24,7 +24,7 @@ const mergeProofContext = (row, sha, tree) => {
|
||||
});
|
||||
const success = (name) => ({ name, conclusion: 'success' });
|
||||
return { proof, reuseRuns: new Map(), jobs: [
|
||||
success('Предполётные проверки: документация, провенанс, процесс'),
|
||||
success('Предполёт: документация, провенанс, процесс'),
|
||||
success('Классификация изменённых файлов'),
|
||||
success('Переиспользование: это дерево уже проверено'),
|
||||
success('Фронтенд: типы, юниты, мутанты, синхрон бандла'),
|
||||
|
||||
@@ -23,7 +23,7 @@ const proofContext = ({ id, full = true, conclusion = 'success' }) => {
|
||||
};
|
||||
const proof = buildCiProof({ candidateSha: SHA, candidateTree: TREE, runId: id, attempt: 1, event: 'workflow_dispatch', needs });
|
||||
const jobs = [
|
||||
greenJob('Предполётные проверки: документация, провенанс, процесс'),
|
||||
greenJob('Предполёт: документация, провенанс, процесс'),
|
||||
greenJob('Классификация изменённых файлов'), greenJob('Переиспользование: это дерево уже проверено'),
|
||||
greenJob('Фронтенд: типы, юниты, мутанты, синхрон бандла'),
|
||||
...Array.from({ length: 6 }, (_, i) => greenJob(`Мутанты по диффу (${i + 1}/6): затронутые свидетели краснеют`)),
|
||||
|
||||
@@ -12,7 +12,7 @@ const TREE = 'b'.repeat(40);
|
||||
const MUTANT_JOBS = [1, 2, 3, 4, 5, 6].map((n) => ({ name: `Мутанты по диффу (${n}/6): затронутые свидетели краснеют`, conclusion: 'success' }));
|
||||
const OTHER_JOBS = [{ name: 'Фронтенд: типы, юниты, мутанты, синхрон бандла', conclusion: 'success' }];
|
||||
const BASE_JOBS = [
|
||||
{ name: 'Предполётные проверки: документация, провенанс, процесс', conclusion: 'success' },
|
||||
{ name: 'Предполёт: документация, провенанс, процесс', conclusion: 'success' },
|
||||
{ name: 'Классификация изменённых файлов', conclusion: 'success' },
|
||||
{ name: 'Переиспользование: это дерево уже проверено', conclusion: 'success' },
|
||||
];
|
||||
|
||||
@@ -456,6 +456,10 @@ test('журнал свидетелей changed_mutants: rerun продолжа
|
||||
|
||||
test('#541: Validate всегда публикует proof точной попытки, а reuse раскрывает источник', () => {
|
||||
const workflow = read('validate.yml');
|
||||
const preflightName = workflow.match(/\n preflight:\n name: "([^"]+)"/)?.[1];
|
||||
assert.equal(preflightName, 'Предполёт: документация, провенанс, процесс');
|
||||
assert.ok(Buffer.byteLength(preflightName, 'utf8') <= 100,
|
||||
'GitHub Jobs API truncates job names longer than 100 UTF-8 bytes');
|
||||
assert.doesNotMatch(workflow, /with:\s*\{[^\n]*\$\{\{/,
|
||||
'GitHub does not parse an unquoted expression inside a YAML flow mapping');
|
||||
const proofAt = workflow.indexOf('\n proof:\n');
|
||||
|
||||
Reference in New Issue
Block a user