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 이벤트 제안 5: 통합 제안

이 제안에서 우리는 일관된 이벤트 그룹을 위한 별도의 파일을 가지고 있습니다. 이 파일들은 .gitlab-ci.yml 구성 파일에 포함되어 있습니다.

# my/events/packages.yaml

spec:
  events:
    - events/package/published
    - events/audit/package/*
  inputs:
    env:
---
do_something:
  script: ./run_for $[[ event.name ]] --env $[[ inputs.env ]]
  rules:
    - if: $[[ event.payload.package.name ]] == "my_package"

.gitlab-ci.yml 파일에서 구독을 활성화할 수 있습니다:

# .gitlab-ci.yml

include:
  - local: my/events/packages.yaml
    inputs:
      env: test

GitLab은 포함된 파일의 변경 사항을 감지하고 그들의 스펙을 구문 분석할 것입니다. 구독을 정의하기 위해 필요한 모든 정보는 스펙에 캡슐화되어 있기 때문에 우리는 전체 파일을 읽을 필요가 없을 것입니다. spec 헤더를 쉽게 읽고 그의 체크섬을 계산하여 workflow 식별자가 될 수 있습니다.

우리가 새로운 식별자를 보면, 특정 프로젝트를 위해 구독을 재정의하고 그것들을 데이터베이스에 업서트할 수 있을 것입니다.

우리는 효율적인 GIN 인덱스 매칭 기술을 사용하여 발행자와 구독자를 일치시켜 파이프라인을 실행할 것입니다.

문법은 또한 CI 구성요소와 호환되며 GitLab 내에서 발생하는 이벤트를 위해 설계된 컴포넌트를 정의하는 것을 더 쉽게 만듭니다.

진입점 파일 변형 없음

이 제안의 다른 변형은 단일 GitLab CI YAML 구성 파일에서 멀어지는 것입니다. 이러한 경우에는 다른 검색 디렉토리를 정의할 것입니다. .gitlab/workflows/와 같은 디렉토리를 우리는 모든 YAML 파일을 저장할 것입니다.

우리는 어디서나 workflow / 이벤트 파일을 include할 필요가 없을 것입니다, 왜냐하면 이러한 것들은 GitLab에서 자동으로 찾을 것이기 때문입니다. 이 기능을 이렇게 구현하기 위해선 “.gitlab-ci.yml 파일의 사용자 정의 위치”와 같은 기능을 확장해야 할 것입니다.

예를 들어, (GitLab CI YAML 파일은 여전히 지원됩니다):

# .gitlab/workflows/push.yml

spec:
  events:
    - events/repository/push
---
rspec-on-push:
  script: bundle exec rspec
# .gitlab/workflows/merge_requests.yml

spec:
  events:
    - events/merge_request/push
---
rspec-on-mr-push:
  script: bundle exec rspec
# .gitlab/workflows/schedules.yml

spec:
  events:
    - events/pipeline/schedule/run
---
smoke-test:
  script: bundle exec rspec --smoke