Zuul 소개
Zuul은 프로젝트 게이팅 시스템(Project Gating System)입니다. 이는 CI 또는 CD 시스템과 유사하지만, 코드 저장소의 미래 상태를 테스트하는 데 중점을 둡니다.
게이팅 시스템은 단순히 제안된 변경 사항만 테스트하는 것이 아니라, 진행 중인 수많은 변경 사항과 그 의존성을 포함하여 여러 브랜치 및 저장소의 제안된 미래 상태를 테스트합니다. 또한 소프트웨어를 테스트하는 데 사용한 동일한 플레이북을 배포하는 데에도 사용할 수 있습니다.
Zuul 자체는 다양한 코드 리뷰 시스템의 이벤트들을 수신하고, 해당 이벤트를 기반으로 잡을 실행하며, 그 결과를 코드 리뷰 시스템에 다시 보고하는 서비스입니다. Zuul의 주요 인터페이스는 개발자 워크플로에 매끄럽게 통합되도록 코드 리뷰 시스템으로 구성되어 있으며, 현재 상태를 확인하고 빌드 결과를 둘러볼 수 있는 웹 인터페이스도 제공합니다.
Zuul을 실행하는 가장 좋은 방법은 단일 설치로 가능한 한 많은 프로젝트나 그룹에 서비스를 제공하는 것입니다. Zuul은 프로젝트 간에 원하는 만큼 분리 수준을 제공할 수 있는 멀티 테넌트(multi-tenant) 애플리케이션입니다.
Zuul은 광범위한 코드 리뷰 시스템과 작동하며, 서로 다른 시스템의 프로젝트들을 통합하는 것을 포함하여 여러 시스템과 동시에 작동할 수 있습니다. 전체 목록은 Drivers 를 참고하십시오.
이전 버전의 Zuul에서는 잡 실행에 필요한 리소스를 제공하기 위해 Nodepool 이라는 별도의 컴포넌트가 필요했습니다. Nodepool은 정적으로 정의된 노드뿐만 아니라 여러 클라우드 제공자와도 동시에 작동합니다. 현재 Nodepool의 기능은 Zuul에 통합되었습니다.
Zuul은 노드가 Bare Metal 머신이든 가상 머신(VM), 쿠버네티스 클러스터, 또는 컨테이너든 상관없이 처음부터 멀티 노드 환경에서 잡을 실행하도록 설계되었기 때문에, Zuul의 잡 정의 언어는 여러 노드에서 태스크를 오케스트레이션하는 기능을 지원해야 합니다. Zuul은 이를 위해 Ansible을 사용합니다. Ansible은 잘 알려져 있으며 배우고 사용하기 쉽습니다. 기존의 일부 Ansible 플레이북과 역할은 Zuul에서 직접 사용할 수도 있습니다.(단, 일부 제한 사항이 있어 모든 경우가 가능한 것은 아닙니다.)
하지만 Zuul을 사용하기 위해 Ansible에 대한 지식이나 사용 경험이 반드시 필요한 것은 아닙니다. Zuul에 내장된 Ansible로 쉘 스크립트나 기타 프로그램을 실행하는 것은 매우 간단합니다. Zuul의 표준 잡 라이브러리에는 지정된 쉘 스크립트를 실행하는 잡도 포함되어 있어, Ansible을 전혀 작성하지 않고도 Zuul을 사용할 수 있습니다.
Zuul은 사용자 커뮤니티에 의해 개발되고 유지 관리되는 오픈 소스 프로젝트입니다. 여러분의 지원과 기여 를 환영합니다.
Nodepool: https://zuul-ci.org/docs/nodepool/