파이프라인 트리거 설정
트리거는 파이프라인을 시작하는 요소입니다. 각 트리거는 캔버스 위의 노드이며, 노드 라이브러리의 트리거 섹션에서 끌어다 놓습니다. 그 노드를 선택하면 오른쪽에 검사기가 열립니다. 항상 떠 있는 트리거 목록도, 트리거 탭도, 트리거 화면도 없습니다.
트리거 검사기 열기
섹션 제목: “트리거 검사기 열기”- 설정 → 워크스페이스 → 파이프라인 템플릿으로 이동합니다.
- 템플릿 행의 연필 아이콘을 눌러 편집기를 엽니다.
- 캔버스에서 트리거 노드를 선택합니다. 오른쪽 패널에 그 트리거의 설정이 나타납니다. 아무것도 선택하지 않으면 패널은 숨겨집니다.
트리거 추가하기
섹션 제목: “트리거 추가하기”노드 라이브러리의 트리거 섹션에는 모든 시작 종류가 각각의 노드로
나열됩니다. 수동, 일정, 웹훅, 그리고 도메인 이벤트마다 카드 하나씩입니다.
merged, ticket 또는 타입 이름(PrMerged)을 검색한 뒤 카드를 캔버스로
끌어다 놓습니다. 새 템플릿에는 진입 앵커에 트리거 추가 고스트 타일도
표시되며, 같은 검색 목록에서 고르면 됩니다.
트리거는 즉시 삽입됩니다. 새 자동 트리거는 비활성 상태로 시작하므로, 설정하기 전에 끌어다 놓는 것만으로 실행이 시작되지 않습니다. 검사기의 활성화됨 스위치로 켜거나, 휴지통 아이콘으로 삭제합니다.
수동 실행 허용하기
섹션 제목: “수동 실행 허용하기”수동 실행을 끌어다 놓고(또는 고스트 타일에서 고르고) 검사기에서
활성화됨을 켭니다. 그래야 템플릿이 실행 런처에 나타납니다. 특별한
경우가 아니라, 이 스위치가 이벤트 타입이 manual인 평범한 트리거 행을
기록합니다. 즉시 저장되며, 따로 저장할 것은 없습니다.
편집기 헤더의 수동 실행 뒤에도 같은 스위치가 있으며, 템플릿이 선언한 입력 옆에 있습니다.
이벤트 시
섹션 제목: “이벤트 시”다음 이벤트가 실행을 시작합니다:
| 선택기 레이블 | 이벤트 |
|---|---|
| 외부 PR 열림 | ExternalPrDetected |
| PR 게시됨 | PullRequestPublished |
| PR 상태 변경 | PullRequestStatusChanged |
| PR 병합됨 | PrMerged |
| 메시지 수신 | MessageReceived |
| 티켓 생성됨 | TicketCreated |
| 티켓 상태 변경 | TicketStatusChanged |
| 티켓 할당됨 | TicketAssigned |
| 티켓 완료 | TicketCompleted |
| 티켓 실패 | TicketFailed |
| 티켓 취소 | TicketCancelled |
| 예산 한도 초과 | BudgetThresholdCrossed |
| 저장소 추가됨 | RepoAdded |
| 회의 녹음 중지 | MeetingRecordingStopped |
| 스킬 업데이트됨 | SkillUpdated |
| 스페이스 삭제됨 | SpaceDeleted |
SpaceDeleted는 기본 제공 워크트리 정리 파이프라인이 수신하는 이벤트입니다.
삭제된 스페이스의 id를 담고 있어서, 실행은 워크스페이스 전체를 훑는 대신
바로 그 스페이스의 워크트리만 회수합니다.
각 이벤트가 담는 페이로드 키는 도메인 이벤트 레퍼런스를 참고하세요.
이벤트 트리거 필터링하기
섹션 제목: “이벤트 트리거 필터링하기”PR 상태 변경 노드를 선택합니다. 검사기의 상태 칩이 UI에서 작성할 수 있는
유일한 필터입니다. merged, closed, approved, opened, reopened 중
아무거나 탭하면, 이벤트의 status가 그중 하나와 일치할 때만 트리거가
발생합니다. 모든 칩을 선택하지 않은 채로 두면 필터가 없는 것입니다.
자유 형식 JSON 필터 필드는 없습니다. 이벤트의 페이로드가 담지 않은 필터 키는 절대 일치하지 않으므로, 도메인 이벤트 레퍼런스에서 확인하지 않은 키로 직접 작성하지 마세요.
일정에 따라
섹션 제목: “일정에 따라”일정 노드를 선택해 언제 발생할지 편집합니다. 검사기 필드는 값을 바꾸는 대로 저장됩니다:
| 필드 | 설명 |
|---|---|
| 일정 (cron 또는 every:seconds) | 0 9 * * 1 같은 다섯 필드 cron 표현식 또는 every:86400 같은 간격입니다. 숫자만 쓰면 every:<n>으로 변환됩니다. |
| 시간대 (선택) | Europe/Paris 같은 IANA 시간대입니다. 기본값은 UTC입니다. |
| 놓친 실행 처리 | 서버가 중단된 동안 놓친 발생을 어떻게 처리할지 정합니다. 한 번만 실행은 재시작 시 놓친 슬롯을 모두 하나의 발생으로 합치고(기본값), 건너뛰기는 다음 미래 슬롯부터 다시 시작합니다. |
캔버스 타일의 요약 줄은 every:<seconds> 형식일 때만 간격을 풀어서
보여줍니다. cron 표현식은 “일정”으로만 표시됩니다.
웹훅으로
섹션 제목: “웹훅으로”웹훅을 끌어다 놓으면 임의의 토큰이 생성됩니다. 노드를 선택하면 검사기에서
경로 POST /webhooks/<token>을 복사할 수 있습니다.
토큰은 HMAC 시크릿이기도 합니다. 요청에는
X-Hub-Signature-256: sha256=<hex>가 있어야 하며, 여기서 hex는
HMAC-SHA256(body, token)입니다. 검증에 실패한 전송은 거부되고 로그에
남으며 다시 재생할 수 없습니다. 중복은 중복 제거 키로 무시됩니다.
각 시작은 그래프에서 각자의 노드입니다. 일정에서 선을 끌어오면 일정에만 연결됩니다. 수동 실행은 같은 작업에 합류하기 전에 다른 경로(예: 조건 노드)를 지날 수 있습니다. 실행은 이벤트 타입과 일치하는 시작으로 들어가고, 다른 시작에 속한 하위 그래프는 건너뜁니다.
트리거가 실행에 도달하는 방식
섹션 제목: “트리거가 실행에 도달하는 방식”활성화된 트리거의 이벤트 타입과 필터가 모두 일치하면, 이벤트의 페이로드를
실행의 트리거 페이로드로 삼아 실행이 시작됩니다. 단계의 프롬프트나 스크립트에
있는 {{key}}가 이 페이로드를 기준으로 해석됩니다. 자연 키를 가진 이벤트는
중복 제거되므로, 같은 이벤트가 두 번 발생해도 실행이 두 번 시작되지 않습니다.
비활성화된 _템플릿_은 트리거가 일치해도 거부됩니다. 기본 제공 템플릿 열셋 중 여덟 개는 비활성 상태로 제공되므로, 템플릿을 켜기 전까지 초기 트리거는 아무것도 시작하지 않습니다.
유용한 패턴
섹션 제목: “유용한 패턴”- 수동 경로에만 조건 걸기 — 수동 실행은 조건 노드를 거치게 연결하고, 일정은 작업으로 곧장 연결합니다. 각 시작은 각자의 선을 가집니다.
- 모든 새 PR 리뷰 —
pr_review템플릿에 PR 게시됨 이벤트를 겁니다. - 병합 후 정리 — PR 상태 변경 이벤트를
merged/closed/approved로 필터링합니다. 기본 제공pr_merged_cleanup템플릿은 이미 이 방식으로 수신하며, 티켓 완료/취소,SpaceDeleted, 그리고 가비지 컬렉션이라 재시드할 때마다 강제로 활성화되는 일일 일정도 함께 수신합니다. - 야간 정리 — 첫 노드가 bash 스크립트인 템플릿에 시간대와 함께
0 2 * * *일정을 겁니다. - 외부 시스템에 반응 — 웹훅 트리거를 사용하고, 호출하는 시스템이 위와 같이 요청 본문에 서명하도록 합니다.