Skip to content

Drone CI

드론(Drone) 은 도커에서 빌드되고 구글 고(Go)로 작성된 지속적인 통합 플랫폼이다. 드론 프로젝트는 현재 적용 가능한 기술의 문제점을 개선하기 위해 성장했으며, 개발 환경을 설정하는 작업을 처리한다.

드론은 자동화된 테스팅과 지속적인 배포에 관한 간단한 접근 방식을 제공한다. 사용자의 목적에 부합하는 도커 이미지를 선택해서 깃허트(GitHub)에 연결하고 커밋하면 된다. 드론은 독립형 테스팅 환경을 공급하기 위해 도커 컨테이너를 사용하며, 기존 방식처럼 서버 관리를 해야 한다는 부담 없이 스택을 통해 모든 프로젝트를 완벽하게 제어한다. 드론 커뮤니티에는 100명의 기여자가 있으며, 모바일 앱 개발과 엔터프라이즈에 적용하게 될 날을 희망하고 있다.

Architecture

Drone has a very simple client and server-based architecture, it is composed of three things:

  • Drone server
  • Drone agents (called runners)
  • Drone pipeline configuration file (on each git repository)

The following diagram depicts its architecture with more detail:

Drone_CI_-_architecture_diagram.png

Features

The following is a list of the main Drone features:

  • Drone은 Go 언어로 작성되었고 모든 구성 요소가 Docker 컨테이너로 실행되기 때문에 매우 가볍습니다. 덕분에 Drone을 다양한 플랫폼이나 클라우드 환경에 단 몇 분 만에 쉽게 배포할 수 있습니다.
    • 기본적으로 각 파이프라인 단계는 런타임에 자동으로 다운로드되는 격리된 Docker 컨테이너 내에서 실행됩니다.
    • 또한 Drone은 Jenkins와 같은 다른 CI/CD 제품에 비해 학습 곡선이 매우 낮습니다.
  • Linux amd64, Linux arm/arm64, Windows 및 Mac 서버를 포함한 다양한 운영 체제 및 아키텍처용 러너를 사용할 수 있습니다.
    • 이러한 폭넓은 플랫폼 지원을 통해 단일 제품으로 기존 클라우드 배포부터 IoT, 네이티브 Windows 또는 Mac 빌드에 이르기까지 다양한 사용 사례 시나리오에 활용할 수 있습니다.
  • 확장 가능한 아키텍처: Drone은 다양한 클라우드 제공업체를 위한 자동 확장 기능을 제공하여 수요에 따라 러너를 실행하므로 개발자는 전용 리소스를 할당받을 필요 없이 클라우드 비용을 절감할 수 있습니다.
  • 이 솔루션은 온프레미스 설치형 또는 추가 기능을 포함한 SaaS 형태로 제공되므로 필요에 가장 적합한 방식을 선택할 수 있습니다.
  • 플러그인과 확장 기능을 통해 기능을 확장할 수 있습니다. 플러그인은 파이프라인에 기능을 추가하고, 확장 기능은 드론 코어 자체에 적용됩니다. 플러그인은 어떤 언어로든 작성할 수 있고 컨테이너 내에서 격리되어 실행되므로 개발이 매우 쉽습니다.
  • 파이프라인은 간단하고 명확한 구문을 가진 YAML 형식으로 정의됩니다.
  • 다양한 데이터베이스 백엔드 옵션을 제공합니다. 기본적으로 SQLite를 사용하며 별도의 설정 없이 바로 사용할 수 있지만, 프로덕션 환경에서는 외부 PostgreSQL 또는 MySQL 데이터베이스와 연동하여 사용할 수 있습니다.
  • 그리고 무엇보다 좋은 점은 오픈 소스라는 것입니다!

단점

  • SCM 플랫폼이 드론 서버의 웹훅에 접근할 수 있도록 드론 서버는 인터넷을 통해 접근 가능해야 합니다.
  • 드론에는 약 100개의 플러그인이 있지만, 이는 젠킨스와 같은 다른 제품에서 사용할 수 있는 플러그인 수에 비하면 훨씬 적습니다.
  • 이 도구는 Git SCM 플랫폼만 지원하지만, 최신 프로젝트에서는 문제가 되지 않을 것입니다.
  • Drone 서버 인스턴스는 한 번에 하나의 Git SCM 플랫폼에만 액세스할 수 있습니다. 여러 플랫폼을 사용하는 경우 SCM 플랫폼당 하나씩, 여러 개의 Drone 서버를 인스턴스화해야 합니다.

See also

Favorite site