inputs и secrets
Тема дорожной карты · GitHub Actions
Reusable workflows в GitHub Actions принимают inputs: и secrets:, объявленные в блоке on.workflow_call: вызываемого workflow. Это создаёт типизированный интерфейс, которому должны соответствовать вызывающие — по аналогии с сигнатурой функции для целого CI/CD-пайплайна. Карта inputs: поддерживает поля type: (string, boolean или number), required: и default:. Вызывающие передают значения через with: в шаге job с uses:, а reusable workflow читает их как ${{ inputs.<name> }} внутри своих jobs. Секреты должны быть явно объявлены в secrets: и переданы вызывающим через secrets: в вызывающем job — они не могут быть получены неявно из хранилища секретов родительского репозитория. Это граница безопасности, предотвращающая утечку секретов между организациями в общей инфраструктуре пайплайнов. Специальный сокращённый вариант secrets: inherit можно использовать у внутренних (в рамках одной организации) вызывающих для пересылки всех секретов без их явного перечисления, упрощая автоматизацию workflow для доверенных внутренних пайплайнов. Разработка чётких минимальных интерфейсов inputs: и secrets: для reusable workflows — лучшая практика GitHub Actions, сохраняющая компоненты общих пайплайнов слабо связанными, версионированными и безопасными для вызова через границы репозиториев и организаций.
Как это работает
inputs и secrets: workflows, вызываемые из других workflows. Триггер on: workflow_call: с inputs:, secrets:, outputs:. Вызов через uses: org/repo/.github/workflows/x.yml@sha. Отличие от composite actions: reusable workflows — целые workflows (несколько jobs), composite actions — наборы шагов внутри одного job. Полезно для "стандартный build-пайплайн", расшаренный между многими репо в org.
Когда применять
Reusable workflows — когда нужно расшарить целые пайплайны (security-scan, release-pipeline, deploy-pipeline) между репо: пишите раз, ссылайтесь везде. Composite actions — для расшаривания последовательностей шагов внутри одного job. Пиньте called workflows по SHA в production. Тестируйте изменения reusable workflow в sandbox-репо до roll-out.
Типичные ошибки
Ловушки inputs и secrets: каскадные workflow_call цепочки (A зовёт B зовёт C — отладочный кошмар); сложность передачи секретов (нужен явный secrets: inherit или per-secret pass); breaking inputs в "централизованно-владельческом" workflow ломают consumer-репо (релизьте как новую версию, депрекейтьте старую).