팀을 곤란하게 만드는 실행 조건들
push와 pull_request 말고도 알아둬야 할 미묘한 이벤트 타입들이 있어. 대부분 장애가 터지고 나서야 팀이 이걸 깨닫지.
pull_request vs pull_request_target
pull_request는 포크 코드 컨텍스트에서 비밀값 없이 실행돼. 안전하지.pull_request_target은 베이스 저장소 컨텍스트에서 모든 비밀값을 가지고 실행돼. 이런 워크플로에서 PR 코드를 체크아웃하면 위험해. 전형적인 'pwn-request' 취약점이야.pull_request_target은 라벨링, 댓글 작성, 메트릭 계산 용도로만 써. PR 작성자의 코드를 실행하는 건 절대 금지야.
schedule
- 항상 UTC 기준이야.
- 활동이 없는 저장소에선 비활성화돼 (커밋이 60일 없으면).
- 이탈: 트래픽이 몰릴 땐 GitHub가 예약된 실행을 지연시킬 수 있어. 밀리초 단위의 정확도에 의존하면 안 돼.
workflow_dispatch
- 입력값은 타입이 있어:
string(기본),boolean,choice,environment. - 일부 UI 흐름에서 필수 입력값은 기본값을 명시해야 해.
- 용도는 수동 배포, 일회성 백필, 임시 수정이야.
workflow_run
- 다른 워크플로가 끝날 때 워크플로를 실행해.
- 활용 사례: CI 후 배포, 댓글 요약, 포워더.
- 포크에서도 베이스 저장소의 비밀값을 상속받아. 주의해.