GitHub Actions reusable workflows: кто виноват — caller или workflow_call
Как разбирать падения reusable workflows в GitHub Actions: inputs, secrets, permissions, called workflow SHA, matrix и job_id без переходов по десяти вкладкам.
Reusable workflows в GitHub Actions удобны: один общий workflow можно вызывать из десятков репозиториев через workflow_call. Но когда он падает, появляется вопрос: виноват вызывающий репозиторий или общий workflow?
Для новичков и мидлов главная сложность в том, что лог разбросан между caller workflow, called workflow, matrix job и настройками permissions.
Коротко: кто такой caller
Caller workflow — workflow в вашем репозитории, который вызывает общий файл. Called workflow — переиспользуемый workflow, объявленный с on: workflow_call. Он получает inputs, secrets и permissions, но не всегда ровно так, как кажется.
Частые причины падений
1. Не передали input. В called workflow поле required, а caller забыл передать значение.
2. Не унаследовали secrets. secrets: inherit работает не во всех организационных сценариях так, как ожидают команды.
3. Permissions слишком узкие. Например, called workflow хочет писать статус или комментарий, а token имеет только read.
4. Используется не тот SHA workflow. Вы думаете, что вызываете свежую версию, а caller закреплён на tag/branch с другим кодом.
5. Matrix размножила проблему. Один и тот же reusable workflow упал в одной ячейке matrix, а не во всех.
Что смотреть
uses:строку в caller workflow.- Inputs и secrets в блоке вызова.
permissions:на уровне workflow и job.github.workflow_refи commit SHA called workflow.- job id и matrix values конкретной красной ячейки.
Мини-пример
jobs:
test:
uses: org/ci/.github/workflows/node-test.yml@v2
with:
node-version: "20"
secrets: inherit
permissions:
contents: read
checks: write
Если called workflow пытается создать PR comment, checks: write может быть недостаточно. Если v2 указывает на старый tag, проблема может быть уже исправлена в main.
Где тут Exlogare
Когда reusable workflow падает, автор PR не должен вручную переходить caller → called → matrix cell → raw logs. Exlogare может получить лог GitHub Actions и вернуть RCA прямо в PR: где упало, в каком workflow и что проверить первым. Смотрите GitHub Actions ingest.
Читайте также
- Статусы в GitLab, GitHub и Bitbucket: мини-словарь для DevOps
- Монорепозиторий: один pipeline, много пакетов — как читать CI-лог
Чеклист
- Проверьте
uses:и версию called workflow. - Сравните inputs с
workflow_call. - Проверьте secrets и
secrets: inherit. - Посмотрите effective permissions.
- Найдите конкретную matrix cell.
- Добавьте RCA в PR, чтобы автор не искал контекст вручную.