하나의 워크플로, 여러 호출자
재사용 워크플로는 on: workflow_call를 가진 워크플로 파일이야. 다른 워크플로가 uses:로 참조하지. 호출된 워크플로는 자기 작업을 자기 러너에서 실행하지만, 비밀값과 변수는 호출자에게서 상속받아.
왜 이게 중앙화 메커니즘일까
12개 저장소가 모두 '빌드, 테스트, GHCR 푸시, 스모크 배포' 순서를 필요로 한다면 12개 복사본을 유지하고 싶지 않을 거야. 단일 저장소(org/.github나 org/ci)에 워크플로를 넣고 workflow_call로 노출해서, 모든 사용자가 그곳을 가리키게 만들어.
입력값, 출력값, 비밀값
inputs— 호출자의 타입이 있는 매개변수(string, boolean, number)야.outputs— 호출된 워크플로가 생성하고, 호출자의 하위 작업이 읽어.secrets— 명시적으로 상속하거나 하나씩 지정해. 간단한 경우엔secrets: inherit을 써.
알아둘 제약
- 중첩은 4단계까지 가능해(a가 b를 호출, b가 c를, c가 d를).
- 재사용 워크플로는 단계에서 호출할 수 없어(작업에서만 가능).
- 호출된 워크플로의
permissions:블록이 적용되고, 호출자의 것은 아니야.