본문 바로가기

개발/개발 관련 Contents

Circle-CI 맛보기

반응형

이번 Facebook Developer Circles에 참여하여 해커톤을 진행하면서 경험해보지 못한 다양한 툴과 스택을 다루어 보았다. 그중 Circle-CI에 대해서 알아보고 싶어 공부를 해보았다.

Github 저장소를 만들고 CRA를 통해 간단한 프론트 프로젝트를 구현하였놓았는데 같은 팀인 욱재님이 "Circle-CI도 붙여 볼까요?" 이러시더니 뚝닥뚝닥 붙이셨다. 그때부터 lint와 test코드에 대한 성공 실패 여부를 slack 메세지로 받을 수 있었고 lint를 push 때 빼먹을 때마다 faild 란 메시지를 볼수 있어 금세 버릇이 들었다(하지만 마지막 커밋도 lint안함..). 어떤 역할을 하는 것인지 알아보도록 하자.

CI는 Continuous Integration으로 지속적인 통합이란 뜻을 의미한다. 지속적으로 퀄리티 컨트롤을 적용하는 프로세스를 실행하는 것이다 라는 설명이 있는데 이를 통해 lint와 test 코드 성공 여부를 체크하여 좋은 퀄리티를 컨트롤 하는 것으로 생각된다.

이전에 잠시 보았던 Jenkins와 비슷한 역할을 하는 것으로 생각된다. 저장소가 개발자들의 베이스 라인과는 너무 많이 달라 지게 되는 "통합의 지옥"이라 불리는 상황에 빠지게 되는데 이 경우, 작업하는 시간보다 작업 내용을 통합하는데 시간을 더 사용하게 되며, 최악의 경우 처음부터 다시 하는 경우가 더 나은 상황이 발생한다.

CI Tools 로는

  • CircleCI : 무료. 빌드는 한번에 하나만 돌릴 수 있다는 단점.
  • Jenkins : 설치, 관리가 어려움. 대기업에서 주로 사용
  • TravisCI : 학생은 무료.

그 중에서 우리는 CircleCI에 대해 알아보자.

CircleCI는 트레비스나 버디빌드와 같이 서비스 형태로 제공되며, 트래비스와 같이 저장소 단위로 빌드를 관리할 수 있으면서도 빌드 속도는 어느정도 만족할 수준을 보여준다. 또한, 빌드 결과물을 트래비스 CI 대비 쉽게 저장하고 관리할 수 있다.

무엇보다, 무료계정에서도 비공개 저장소를 지원하므로 개인 프로젝트에 손 쉽게 CI를 사용할 수 있다.

아직 제대로된 intergration을 경험해 보지 못한 나에게는 버거운 도구일 수 있으나 간단하게 테스트를 진행해 보았다.

공식 문서를 따라 get started를 진행해 보았고 다양한 설정을 할수 있는 .circleci/config.yml 파일을 간단히 살펴보기 전에

  1. 저장소를 만들고
  2. .circleci/config.yml 파일을 생성하고 아래 내용을 추가해준다.
  3. circleci에서 로그인을 하여 연결하고 싶은 repository를 찾아 설정을 하고
  4. Start Building 을 통해 Run한다.

이러면 기본적인 ci 연결이 완료된다.

version: 2
   jobs:
      build:
         docker:
            - image: circleci/ruby:2.4.1
         steps:
            - checkout
            - run: echo "A first hello"

 

version은 ci 버젼을 뜻하고

jobs를 통해 자동화하고 싶은 task를 정하여

여기서는 build에서 docker를 이미지 통해 움직일 때 checkout를 통해 run 실행시킨다는 의미를 가진다.

이 예제는 기본적인 예제이고 이전에 진행하였던 프로젝트에 코드를 살펴보면

 

version은 2.1이고 실행하는 환경을 node로 설정하고 front-plate 디렉토리를 살펴본다.

하는 job은 linting을 살펴본다. 보면서 파악하였는데 testing은 codecov를 사용하였다(다른 툴). restore_cache를 통해 캐시를 다시 저장하고 dependencies를 설치한 다음 설치된 cache를 저장하는 역할을 하고 있다.

간단하게 알아보았는데 얼른 위에서 언급한 어려운 intergration을 경험해보고 circleci의 중요성을 몸소 깨닫고 싶은 마음이다.

Reference

Circle-CI에 대해 알아보자

공식 홈페이지

CircleCI를 사용한 지속적 통합 - 커니의 안드로이드 이야기

반응형

'개발 > 개발 관련 Contents' 카테고리의 다른 글

Tortoise (svn gui tool)  (0) 2021.07.13
Process vs Thread  (0) 2021.07.09
Mongodb 관리자 계정 추가 후 접근 불가 에러  (0) 2021.06.29
Webpack에 대해 알아보자.  (0) 2021.06.23
[Git] commit 을 잘못했을 때  (0) 2021.06.18