Skip to content
Exlogare
← Ко всем постам
Команда Exlogare GitHub Actions CI/CD reusable workflows troubleshooting

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.

Читайте также

Чеклист

  • Проверьте uses: и версию called workflow.
  • Сравните inputs с workflow_call.
  • Проверьте secrets и secrets: inherit.
  • Посмотрите effective permissions.
  • Найдите конкретную matrix cell.
  • Добавьте RCA в PR, чтобы автор не искал контекст вручную.