프로젝트 소개
Freshmaker는 소프트웨어 아티팩트의 의존성이 변경된 후 자동으로 재빌드하기 위해 설계된 서비스입니다. 예를 들어, RPM의 .spec 파일이 업데이트되거나 RPM이 Bodhi를 통해 stable로 푸시되면 모듈을 재빌드할 수 있습니다. 마찬가지로, 컨테이너 내의 RPM이 업데이트되면 컨테이너 이미지를 재빌드할 수 있습니다. 이 서비스는 아티팩트 재빌드 정보와 그 이유를 검색하기 위한 REST API를 제공하며, 이러한 이벤트에 대한 메시지를 메시지 버스로 전송합니다.
아키텍처적으로, Freshmaker는 Event-Handler 패턴을 기반으로 합니다. 이벤트는 dist-git, Koji, Bodhi와 같은 다른 서비스로부터 수신된 fedmsg 메시지입니다. 핸들러는 Freshmaker 코어가 제공하는 고급 API를 사용하여 아티팩트를 재빌드하는 작은 클래스입니다. 이 시스템은 또한 아티팩트 간의 의존성을 추적하기 위한 고급 API를 제공하여 재빌드 프로세스를 효율적이고 신뢰성 있게 만듭니다.
워크플로우는 아티팩트 업데이트에 대한 새로운 fedmsg 메시지를 기다리고, 이러한 메시지를 Event 객체로 파싱한 후, 특정 핸들러로 처리하는 것을 포함합니다. 이러한 핸들러는 재빌드해야 하는 아티팩트 목록을 식별하고, 올바른 빌드 순서를 보장하기 위해 트리 구조로 재빌드를 계획하며, 업데이트된 RPM 저장소 생성과 같은 사전 조건을 준비하고, 마지막으로 재빌드를 시작합니다. Freshmaker는 아티팩트 및 그 의존성에 대한 데이터베이스 관리, 그리고 Koji 및 ODCS와 같은 시스템과의 통합을 위한 빌드 시작 등 일반적인 작업을 위한 내장 지원을 포함합니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.