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. As with all projects, the items mentioned on this page are subject to change or delay. The development, release, and timing of any products, features, or functionality 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 필드가 포함됩니다.

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

결과

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

대안

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