This page contains information related to upcoming products, features, and functionality. It is important to note that the information presented is for informational purposes only. Please do not rely on this information for purchasing or planning purposes. The development, release, and timing of any products, features, or functionality may be subject to change or delay and remain at the sole discretion of GitLab Inc.
Status Authors Coach DRIs Owning Stage Created
proposed devops verify -

GitLab CI 이벤트 ADR 001: 계층적 이벤트 사용

배경

우리는 이 문제에서 CI 이벤트를 구독하여 CI 파이프라인을 실행하는 여러 사용 사례에 대해 브레인스토밍을 진행했습니다. 계층적 이벤트 사용 패턴이 나타났는데, 이러한 이벤트는 타입 또는 출처에 따라 함께 그룹화될 수 있습니다.

예시:

annotate:
  on: issue/created
  script: ./annotate $[[ event.issue.id ]]

summarize:
  on: issue/closed
  script: ./summarize $[[ event.issue.id ]]

이 결정을 내릴 당시 구문에 중점을 두지는 않았지만, 대부분의 사용 사례에서 이벤트를 그룹화하는 것이 유용해 보입니다.

사용자가 한 그룹의 여러 이벤트에 동시에 구독할 수 있도록 하는 것을 고려했습니다.

audit:
  on: events/gitlab/gitlab-org/audit/*
  script: ./audit $[[ event.operation.name ]]

이러한 경우, 동일 그룹 내의 이벤트는 동일한 필드/스키마 정의를 공유해야 합니다.

결정

계층적 이벤트 사용: 함께 그룹화될 수 있고 안정된 계약을 따라 동일한 필드를 공유하는 이벤트를 사용합니다. 예를 들어: 모든 이슈 이벤트는 issue.iid 필드가 포함되어야 합니다.

이벤트를 어떻게 그룹화할 지는 아직 결정되지 않았습니다. 이름표를 붙여 그룹화하거나 경로 유사한 구문을 사용하여 그룹화할 수 있습니다.

결과

이로 인해 이벤트의 페이로드 및/또는 스키마를 설명하는 안정된 인터페이스가 필요한 시스템을 구축해야 합니다.

대안

계층적 이벤트를 사용하지 않고, 사용자에게 다른 이벤트에 대한 공통 스키마에 대한 어떠한 보장도 제공하지 않고 각 이벤트에 별도로 구독해야 하는 것입니다. 이는 특히 일부 그룹에 속하는 이벤트에 대해 일반적인 스키마가 필요하다고 기대하는 사용자를 위해 문제가 될 수 있습니다.