Skip to content

fix(ci): починить парс release.yml + гейт на манифесты воркфлоу - #4

Merged
alexnikolskiy merged 1 commit into
mainfrom
fix/release-workflow-yaml
Jul 26, 2026
Merged

fix(ci): починить парс release.yml + гейт на манифесты воркфлоу#4
alexnikolskiy merged 1 commit into
mainfrom
fix/release-workflow-yaml

Conversation

@alexnikolskiy

Copy link
Copy Markdown
Contributor

Диспатч выпуска 0.1.0 отбился с HTTP 422: Workflow does not have 'workflow_dispatch' trigger — хотя триггер в файле есть.

Причина

В шаге проверки semver инлайновый node -e содержал ": " внутри plain-скаляра YAML:

run: node -e '... console.error(`not a semver release: ${process.env.VERSION}`) ...'

Plain-скаляр заканчивается на первом же двоеточии с пробелом, поэтому ломается разбор всего файла. При этом GitHub продолжает показывать воркфлоу как active, а gh workflow list — как существующий. Поломка была невидима ровно до момента, когда ею попытались воспользоваться.

Шаг переписан блочным скаляром run: |.

Почему одной строки мало

Класс ошибки такой, что сломанный воркфлоу не может сообщить о собственной поломке, и обычный CI-прогон его не ловит по определению — он в этом файле и живёт.

Поэтому добавлен verify:workflows: парсит каждый файл в .github/workflows, требует, чтобы он разбирался и объявлял триггеры и джобы, и отдельно — чтобы release.yml существовал (его поломка одновременно молчаливая и дорогая). Заведён в ci.yml, то есть в джобу, которая точно выполняется.

Проверено

workflow gate: 2 workflow file(s) parse and declare triggersci.yml [push, pull_request], release.yml [workflow_dispatch]. От обратного: на намеренно испорченном скаляре падает с exit 1 и называет файл и строку.

🤖 Generated with Claude Code

Диспатч выпуска отбился с HTTP 422 «Workflow does not have 'workflow_dispatch'
trigger», хотя триггер в файле был. Причина: в шаге проверки semver инлайновый
node -e содержал ": " внутри plain-скаляра YAML, а plain-скаляр заканчивается на
первом же двоеточии с пробелом. Ломается при этом РАЗБОР ВСЕГО ФАЙЛА, а GitHub
всё равно показывает воркфлоу как active — поэтому поломка была невидима до
момента, когда ею попытались воспользоваться.

Шаг переписан блочным скаляром. Но чинить только эту строку мало: класс ошибки
таков, что сломанный воркфлоу не может сообщить о собственной поломке, и обычный
CI-прогон его не ловит по определению.

Поэтому добавлен gate verify:workflows: парсит каждый файл в .github/workflows,
требует, чтобы он разбирался и объявлял триггеры и джобы, и отдельно — чтобы
release.yml существовал (его поломка одновременно молчаливая и дорогая). Заведён
в CI, то есть в джобу, которая ТОЧНО выполняется. Проверен от обратного: на
намеренно испорченном скаляре падает с exit 1 и называет файл и строку.
@alexnikolskiy
alexnikolskiy merged commit 6a63052 into main Jul 26, 2026
4 checks passed
@alexnikolskiy
alexnikolskiy deleted the fix/release-workflow-yaml branch July 26, 2026 18:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant