외부 시스템이 workflow 발사
repository_dispatch 가 외부 시스템이 GitHub API 에 POST 해서 workflow trigger 가능하게 해. Payload 는 임의 JSON, github.event.client_payload 에 사용 가능.
흔한 용도:
- Cross-repo orchestration — repo A 가 build 마치고 deploy 하는 repo B 에서 dispatch 발사.
- 외부 CI 통합 — Jenkins 가 stage 마치고 deploy 위해 GitHub 에 dispatch.
- GitHub 외 수동 trigger — Slack slash 명령, 내부 admin 도구, webhook.
POST
POST /repos/{owner}/{repo}/dispatches
Authorization: Bearer <PAT 또는 contents:write 가진 App token>
Body: {
"event_type": "deploy-prod",
"client_payload": { "version": "v1.4.2", "reason": "hotfix" }
}Workflow 는 on: repository_dispatch: types: [deploy-prod] 으로 청취.
workflow_dispatch 와의 trade-off
workflow_dispatch— 수동 UI / gh CLI, typed input, brower/PAT 필요.repository_dispatch— 프로그램, free-form JSON, 머신 대 머신에 적합.