문서

후크

조직 수준의 자동화 기능으로, 작성한 지침에 따라 플랫폼 이벤트에 반응합니다.

후크는 Coroid에서 발생하는 이벤트에 반응합니다. 원하는 이벤트를 선택하고 일반 언어로 명령을 작성하면, 해당 이벤트가 발생할 때 후크가 실행됩니다.

이러한 항목은 자동화 기능 메뉴의 팩토리 내에서 찾을 수 있습니다.

새 작업에서 자동화 항목을 선택한 뒤 '무언가 발생할 때' 옵션을 선택하여 규칙을 생성하세요. 새 작업에서는 GitHub 이벤트와 Coroid의 이벤트를 제공합니다. 자세히 알아보기:자동화.

반응할 수 있는 이벤트

후크는 특정 항목이 전송하는 이벤트에 대해서만 실행됩니다. 대부분의 아래 이벤트는 Coroid 자체에서 전송됩니다. 일부는 사용자 시스템에서 발생합니다. 다른 이벤트는 예약된 항목으로 분류되며, 편집기에는 표시되지 않고 해당 이벤트에 대한 새 후크 생성도 허용되지 않습니다. 예약된 이벤트에 저장된 후크의 경우 편집기와 목록에 절대 실행되지 않는 것으로 표시되지만 삭제되지는 않습니다.

Coroid가 전송하는 이벤트

카테고리이벤트
작업생성됨, 상태 변경됨, 완료됨, 실패함
에이전트시작됨, 완료됨, 오류 발생
저장소커밋 푸시됨, 브랜치 생성됨, pull request이 열림/업데이트되거나 병합됨, 이슈 열림, Coroid를 언급하는 댓글
스프린트생성됨, 계획 시작됨, 시작됨, 작업 추가됨, 작업 제거됨, 리뷰 시작됨, 완료됨, 취소됨
계획단계 시작됨, 완료됨, 실패함
일정실행 시작됨, 실행 완료됨, 실행 실패함
보고서시작됨, 완료됨, 실패함
품질검사 시작됨, 통과 또는 실패; 자동으로 해결되지 않음
승격요청됨, 승인됨, 거절됨
릴리스생성됨, 후보 변경됨, 노트 변경됨, 노트 승인됨, 범위 변경됨, 체크리스트 완료됨, 게이트 평가됨, 게이트 재정의됨, 승인됨, 게시됨, 롤백됨
배포대기 중, 실행 중, 성공, 실패, 취소됨, 수동으로 인증됨, 수동으로 롤백 인증됨, 상태 확인 통과, 상태 확인 실패
동기화외부 소스 업데이트됨
Slack 및 Telegram자동화 필터와 일치하는 메시지

사용자 시스템에서 발생하는 이벤트

카테고리이벤트
분석종속성 발견됨, 보안 문제 발견됨, 분석 완료됨
외부 배포시작됨, 완료됨, 실패함

Coroid는 이러한 이벤트를 전송하지 않습니다. CI 파이프라인, 스캐너 또는 기타 사용자 시스템이 해당 ID를 이용해 후크를 실행하며, 이때POST /api/v1/organizations/hooks/:id/dispatch에서비스 계정다음 범위가 있는hooks:dispatch범위입니다. 훅은 저장된 이벤트가 발생할 때 실행됩니다. 편집기에서 이 이벤트는 "자체 시스템에서 발생" 아래에 표시됩니다.

예약된 이벤트

아직 전송되거나 발생하지 않아 편집기에서 제공되지 않는 이벤트입니다:

카테고리이벤트
작업단계 변경
에이전트반복 작업, 도구 호출
계획생성, 단계 완료, 최종 검토 시작, 최종 검토 완료, 계획의 pull request 전
일정생성, 활성화, 일시 중지
스프린트계획 완료, 작업 완료, 범위 변경
릴리스스테이징됨, 검증됨
승격승격의 pull request 전
품질검사를 사용할 수 없음, 복구 시작 또는 시도, 재검증 시작, 합의 도달

작업의 시작과 종료

계획, 일정, 보고서, 품질 검사, 승격 및 릴리스는 시작할 때와 종료할 때 각각 이벤트를 전송합니다. 훅은 작업이 어떻게 종료되었는지에 반응하고, 자체 시스템으로 소요 시간을 측정할 수 있습니다.

작업시작 이벤트종료 이벤트
계획단계 시작: 계획 실행이 시작될 때 첫 이벤트가 전송됩니다완료, 실패
일정실행 시작실행 완료, 실행 실패
보고서시작완료, 실패
품질 검사검사 시작통과, 실패, 자율적으로 해결되지 않음
승격요청됨승인됨, 거부됨
릴리스생성됨게시됨, 롤백됨

이러한 각 이벤트에는 발생 시각이occurredAt. 작업 결과를 보고하는 이벤트에는 작업 시작 시각도startedAt에 기록되며, 소요 시간은durationMs. 그건startedAt시작 이벤트의 일부입니다.occurredAt일시 중지된 작업 시간도 전체 소요 시간에 포함됩니다.

변경 사항이 저장될 때마다 이벤트가 한 번씩 전송됩니다. 취소된 변경 사항에는 아무것도 전송되지 않으며, 재시도 시에도 중복으로 전송되지 않습니다. 종료 이벤트는 시작된 작업에 대해서만 전송됩니다. 스케줄의 드라이런 또는 시작 전에 취소된 보고서의 경우에는 전송되지 않습니다.

시간 외에 각 이벤트가 포함하는 내용은 다음과 같습니다:

이벤트전송 시점필드
계획 단계 시작계획의 실행이 시작되며(첫 번째 단계), 이후 다른 단계의 첫 번째 작업이 시작될 때마다 다시 발생합니다.planId, plan(id, 제목),phase(id, 순서, 제목),firstPhase, executionStartedAt
계획 완료 또는 실패계획의 실행이 종료됩니다. 계획 수립 중에 실패한 경우에는 이벤트가 전송되지 않습니다.planId, plan, status, executionStartedAt
스케줄 실행 시작스케줄 실행이 시작됩니다.scheduleId, runId, schedule(id, 이름),run(트리거 사유, 상위 실행)
스케줄 실행 완료 또는 실패실행이 종료됩니다.동일한 필드,status, 그리고tasksCreated또는error
보고서 시작보고서 생성이 시작됩니다. 일시 중지 및 재개 시에는 동일한 시작 시점이 유지됩니다.reportId, report(id, 유형, 제목)
보고서 완료 또는 실패보고서가 저장되거나 실패하거나 취소됩니다.동일한 필드, 그리고tokensUsed, costUsd그리고hasActionableFindings, 또는error
품질 검사 시작품질 검사가 시작됩니다.qualityRunId, check(대상, 트리거, 정책 버전, 커밋)
품질 검사 통과 또는 실패검사 결과가 결정됩니다.동일한 필드,decision, redoCause, failedExpectationIds
품질 문제가 자동으로 해결되지 않음Coroid는 검사에서 발견된 문제를 수정하려는 시도를 중단합니다.qualityRunId, workItemType, workItemId, reason
프로모션 요청됨프로모션이 생성됩니다.promotionId, laneId, promotion(제목, 상태, 브랜치, pull request)
프로모션 승인됨프로모션이 병합됩니다: Coroid에서 승인되고 강제 병합되며, 제공업체에서 병합되거나 릴리스에 포함됩니다.동일한 필드,approval, approvedBy, forceReason
프로모션 거부됨리뷰어가 변경을 요청합니다.동일한 필드,reason, requestedBy, comment
릴리스 게시됨릴리스의 첫 번째 프로덕션 배포가 성공적으로 완료됩니다.releaseId, version, commitSha
릴리스 롤백됨롤백을 통해 환경의 릴리스가 대체됩니다.releaseId, version, rolledBackToReleaseId

프로젝트 내 작업과 관련된 이벤트에도projectId, 따라서 하나의 프로젝트에 국한된 훅은 해당 프로젝트에 대해서만 이벤트를 발생시킵니다. 훅이 작업을 생성한 경우, 이러한 이벤트는 해당 훅의 체인 깊이에 포함됩니다.

트리거 및 대상

모든 자동화에는 이벤트가 발생하는 트리거 소스와 이벤트 발생 시 수행할 작업을 결정하는 대상이 있습니다. 그중 두 가지 대상은 이벤트를 작업으로 전환합니다.

트리거 소스이벤트
워크플로우 이벤트Coroid의 이벤트는 위 표에 나와 있는 것과 동일합니다.
GitHub프로젝트 생성, 업데이트 또는 병합; 이슈 생성; Coroid를 언급하는 댓글
Slack자동화의 필터 조건에 맞는 메시지
Telegram자동화의 필터 조건에 맞는 메시지로, /coroid로 시작하는 메시지 등이 해당됩니다.
Jira새로운 이슈
대상수행되는 작업
훅이 페이지에 설명된 대로 읽기 전용으로 사용자의 명령을 실행합니다.
작업 검증이벤트를 요청으로 등록합니다. 검증을 통과하면 Coroid가 작업을 생성합니다.
Coroid Check더 이상 사용되지 않습니다. 모든 pull request에 대한 Coroid 리뷰는품질 관리; 기존 자동화는 일시 중지되었습니다.

GitHub 이벤트에는 GitHub 앱이 필요합니다. Coroid를 언급하는 댓글은 저장소에 쓰기 권한이 있는 작성자에게만 적용됩니다. 자세한 내용은GitHub.

작업 검증에서 생성된 작업은 이벤트 작성자가 신뢰할 수 있는 경우에만 자동으로 시작됩니다. 즉, 저장소에 쓰기 권한이 있는 GitHub pull request, 이슈 또는 댓글의 작성자입니다. Slack, Telegram, Jira 작성자는 신뢰할 수 없으므로 해당 작업은 누군가가 직접 시작해야 합니다. 자세한 내용은작업이 시작되는 시점.

새로운 Jira 이슈는 Coroid의 Jira 웹훅을 통해서만 Coroid에 도달합니다. 이 웹훅은 Coroid에 설정된 웹훅 비밀번호로 서명된 전송 요청만 수락하며, 신규 이슈에 대해서만 적용되고, 해당 이슈의 Jira 프로젝트 키가 Coroid 프로젝트와 일치할 때만 작동합니다. coroid.ai에서는 아직 Jira 웹훅이 설정되지 않았으므로 Jira 트리거는 어떠한 이벤트도 수신하지 못하며, 대신 Jira 이슈를 수동으로 가져와야 합니다. 웹훅이 설정된 경우 새 이슈는 Jira 트리거에 정의된 자동화 규칙에 따라 처리되는데, 예를 들어 품질 관리 내의 Jira 요청 소스 규칙을 통해 사용자가 지정한 유형 및 우선순위에 맞는 이슈를 자격 검증 단계로 보냅니다. 트리거에 자동화 규칙이 없으면 새 이슈는 어떠한 항목에도 등록되지 않습니다. Jira에서의 작업은 절대 자동으로 시작되지 않습니다. 자세히 알아보기이슈 추적기.

기본적으로 읽기 전용

훅은 분석 후 결과를 보고합니다. 후속 작업을 생성할 수는 있지만 코드를 직접 수정하지는 않습니다.

이러한 기본 동작 덕분에 훅을 안전하게 도입할 수 있습니다. 이벤트에 반응하여 코드를 수정하는 자동화 규칙은 감독이 가장 부족한 시점에 작동하기 때문입니다. 훅이작업을 생성합니다정상적인 프로세스를 통해 동일한 결과를 도출합니다 — 명세 작성, 계획 수립, 검증, 리뷰, pull request.

  • 일정시간
  • 이벤트 기반 자동화무언가가 발생하면

일반적인 작업

사양, 계획, 빌드, 검증, 리뷰. 에이전트 슬롯을 사용하며 낮은 우선순위를 부여하십시오.

P2P3

A pull request

자동으로 병합하거나 기본 브랜치에 커밋할 수는 없습니다.

귀하가 승인

자동화의 차이점은 단지 트리거에 있습니다. 자동화가 시작하는 것은 일반적인 경로의 평범한 작업이며, 실제 용량을 사용하여 귀하가 승인하는 pull request로 완료됩니다.

좋은 지침 작성법

훅 지침은 모델에서 처리되므로 코드가 아닌 동료에게 전달하는 지침처럼 작성됩니다. 품질 기준은 일반적인 지침과 동일합니다.명세: 무엇을 확인할지, 무엇이 중요한지, 그리고 어떻게 처리할지 명시하세요.

"아무것도 하지 않음" 경우를 명확히 정의해야 합니다. 이를 누락하면 훅이 실행될 때마다 무언가를 보고하게 되며, 항상 작동하는 훅은 사람들이 더 이상 읽지 않는 훅이 됩니다.

안전 장치

이벤트 기반 자동화는 예측 가능한 방식으로 오류를 일으키므로 세 가지 보호 장치가 마련되어 있습니다:

요청 제한분당, 시간당, 일별로 설정 가능하며 훅별로 개별 구성할 수 있습니다. 고빈도 이벤트에 연결된 훅은 병합 작업 중에 수백 번이나 실행될 수 있습니다.

체인 깊이훅이 이벤트를 발생시켜 다른 훅을 트리거할 수 있습니다. 최대 체인 깊이를 설정하면 무한 루프가 발생하는 것을 방지합니다.

도구 권한훅이 접근할 수 있는 범위는 엄격히 제어됩니다 — 읽기 전용 접근, MCP 호출, 작업 생성 등은 각각 별도로 관리됩니다.

권한

소유자와 관리자만 훅을 생성, 변경, 테스트, 삭제할 수 있으며, 모든 멤버는 훅과 그 실행 내역을 확인할 수 있습니다. 훅이 조직 수준에서 작동하므로 이러한 차등 설정은 의도된 것입니다.

훅 모니터링

플랫폼 내 각 훅 페이지에는 지난 30일간의 실행 내역과 수행 결과(실행 횟수, 실패 사례, 비용)가 표시됩니다. 모든 자동화 실행 내역은 설정 → 활동 메뉴에서 자동화 필터를 통해 확인할 수 있습니다. 새 훅을 활성화한 후에는 반드시 실행 내역을 점검하세요 — 실패의 원인은 오류가 아니라 지속적으로 실행되면서 아무런 조치도 유발하지 않는 경우입니다.

훅과 스케줄

메커니즘트리거 방식
훅플랫폼 이벤트
스케줄시간

두 가지 모두 자동화 기능이며 플랫폼 내에서 함께 목록으로 표시됩니다. 자세히 알아보기자동화.