CI(Continous Integration) 도구 선택 고민 원큐에 끝내기

2023. 11. 14. 20:47Project 해축갤/CI CD

728x90

2023.11.14 - [해축갤 프로젝트/CI CD] - CI(Continuous Integration) 개념, 개인 CI vs 팀 CI

 

CI(Continuous Integration) 개념, 개인 CI vs 팀 CI

2023.10.31 - [해축갤 프로젝트/테스트 코드] - postman 띡띡딸깍 귀찮아서 테스트 코드 짭니다 postman 띡띡딸깍 귀찮아서 테스트 코드 짭니다 매번 기능 만늘때마다 postman 띡 띡 딸깍 하며 기능 테스트

xpmxf4.tistory.com

만약 CI에 대해서 잘 모르신다면 아~주 깔끔히 지난 글을 보고 오시면 좋습니다!

그리고 정말 너무너무 급하시면 아래 결론을 먼저 보시고 글을 읽으셔도 됩니다!!

그처 하트 하나만,,,!


저번 글에서 CI에 대한 기본 개념과

이를 개인/팀 프로젝트 적용 시 프로세스가 어떻게 되는지 알아봤습니다.

 

그렇다면 이번에는 실제로 구축하기에 앞서

어떤 도구를 선택하고 어떠한 프로세스를 통해

CI를 구축할지 알아보겠습니다.

각 CI 도구의 장점 및 사용법

흔히들 CI의 도구로 언급되는 건 Jenkins, Github Actions입니다.

아무래도 제일 대중적인 툴 2가지이니 2가지에서 바로 선택해 진행할 수도 있겠지만

엔지니어라면 매 순간에 제일 적절한 기술 선택을 해야 하니 알면 좋겠죠?

 

그래서 알아보자면 보통 5가지로 많이들 사용합니다.

Jenkins, GitHub Actions, Travis CI, Circle CI, Gitlab CI/CD

각각의 장점과 간단한 사용법은 다음과 같습니다.

1. Jenkins
장점: 매우 강력한 맞춤 설정 기능, 방대한 플러그인 생태계, 광범위한 커뮤니티 지원.
간단한 사용법: Jenkins 서버를 설정(=별도의 EC2 구성필요)하고,Jenkinsfile을 통해프로젝트의 빌드 및 테스트 파이프라인을 구성합니다.

2. GitHub Actions
장점: GitHub 저장소와 직접 통합, 간단한 설정, 개인 및 오픈소스 프로젝트에 대한 무료 사용량 제공.
간단한 사용법: .github/workflows 디렉터리에 YAML 파일을 작성하여 워크플로우를 설정합니다.

3.Travis CI
장점: GitHub 프로젝트와의 쉬운 통합, 간결한 설정, 오픈소스 프로젝트에 대해 무료.
간단한 사용법: 프로젝트 루트에 .travis.yml 파일을 작성하여 빌드 및 테스트를 구성합니다.

4. CircleCI
장점: 사용하기 쉬운 UI, 빠른 빌드 속도, 소규모 프로젝트에 대한 무료 플랜 제공.
간단한 사용법: .circleci/config.yml 파일을 생성하여 빌드 및 테스트 설정을 정의합니다.

5. GitLab CI/CD
장점: GitLab 저장소와 완벽한 통합, 설정의 용이성, 오픈소스 프로젝트에 대한 무료 플랜.
간단한 사용법: .gitlab-ci.yml 파일을 통해 파이프라인을 설정합니다.

CI 전반적인 프로세스

이제 CI 도구를 선택하고 설정하는 방법을 알아보았으니, 나머지 CI 프로세스에 대해 알아보겠습니다!

1. 저장소 설정: 선택한 CI 도구가 프로젝트 저장소와 통합되도록 설정합니다. GitHub Actions와 GitLab의 경우 이미 저장소와 통합되어 있습니다.

2. 빌드 스크립트 작성: 프로젝트의 **build.gradle**에 정의된 대로 빌드 및 테스트가 실행되도록 스크립트를 작성합니다.

3. 테스트 자동화: 프로젝트에 대한 단위 테스트 및 통합 테스트를 자동으로 실행하도록 설정합니다. JUnit5를 사용하는 경우, 테스트 스크립트를 작성하여 CI 파이프라인에 포함시킵니다.

4. 품질 검사 도구 통합(선택, 추후): 코드 품질 검사 도구(ex. SonarQube)를 CI 파이프라인에 통합합니다.

5. 알림 설정: 빌드 실패, 성공 또는 기타 중요한 이벤트에 대한 알림을 설정합니다. Slack, 이메일 등을 통해 알림을 받을 수 있습니다.

6. 문서화 및 유지보수: CI 프로세스를 문서화하고, 변경 사항에 따라 지속적으로 유지보수 및 업데이트합니다.

그렇다면 필자는 무슨 선택을?

이렇게만 보면 솔직히 뭐든 다 좋은 거 같고,

뭘 써도 무방할 거 같다는 생각 안 드시나요?

아니라고요?

많은 호응과 함께 좋아요도 한번씩,,,

저는 찾다 보니 사실 뭘 써도 생각이 들었습니다

사실 이게 틀린 말은 아닙니다. 해축갤 프로젝트는 

해축갤이라는 껍데기를 뒤집어썼을 뿐 사실 단순한 게시판 프로젝트이니깐요.

(노력은 단순하지 않았습니다.)

 

그래도 엔지니어니까 최선의 선택을 내려야 합니다.

그렇다면 제가 원하는 기술이 무엇인가를 생각해봐야 하고

이는 다음과 같습니다.

'빠르고, 무료로, 쉽게 구축하기'

 

뭐 이렇게만 보면 저런 게라는 말을 던지실 수도 있다만

정말로 저게 제가 원하는 기술의 특징입니다.

그렇다면 위 5개의 도구 중에서 어떤 것이 가장 저의 니즈에 어울리는 선택인지 봐야 하고

이는 GitHub Actions입니다.

GitHub Actions 선택의 이유

이유는 다음과 같습니다.

1. 무료 사용량: 개인 프로젝트(public인 경우)에 대해 충분한 무료 사용량을 제공합니다.

2. 간편한 설정: 프로젝트에 .github/workflows 디렉터리를 생성하고 YAML 파일을 작성하는 것만으로 CI 파이프라인을 구축할 수 있습니다.

3. 직관적인 UI: GitHub의 UI는 사용자 친화적이며, 파이프라인의 상태를 쉽게 확인할 수 있습니다.

4. GitHub와의 통합: 이미 GitHub를 사용하고 있다면, 별도의 서비스를 설정할 필요 없이GitHub Actions를 쉽게 추가할 수 있습니다.

GitHub과 통합이 되어 있기에 빠르고, 해축갤은 public Repo 이기에 무료이고,

YAML 작성만으로 간편한 설정이 가능해 쉬운 구축이 가능합니다.

너무나 안 쓸 이유가 없어 보이죠? 그리고 다른 많은 분들도 이런 이유 때문에

GitHub Actions을 사용한다고도 말할 수 있습니다!

그렇다면 다른 도구가 적합하지 않은 이유는?

다른 기술들이 그렇다면 저의 경우에 어울리지 않는 이유를 한번 알아볼까요?

  1. Jenkins
    • 설치와 유지보수
      • Jenkins는 자체 서버에 설치해야 하며, 이 과정이 복잡할 수 있습니다.
        또한, 서버 유지보수와 플러그인 관리가 필요합니다.
    • 학습 곡선
      • Jenkins는 매우 강력하지만, 그만큼 초기 설정과 사용법을 익히는 데 시간이 소요됩니다.
    • 비용
      • Jenkins는 무료로 사용할 수 있지만, Jenkins 서버를 운영하고 유지하기 위한 비용이 발생할 수 있습니다.
  2. Travis CI
    • 무료 플랜의 제한 사항:
      • Travis CI는 오픈 소스 프로젝트를 위한 특별 OSS 크레디트를 제공합니다.
        이 크레디트는 공개 레포지토리에서 빌드를 실행하는 데 사용됩니다.
      • OSS 크레디트가 소진되면 유료 크레딧을 사용하여 계속 빌드할 수 있습니다.
    • 크레딧 구매 및 만료:
      • 추가 빌드 크레딧는 필요에 따라 구매할 수 있으며, 자동 충전 기능도 활성화할 수 있습니다.
      • 구매하거나 무료 플랜의 일부로 받은 크레딧에는 만료일이 있습니다.
    • 무료 시험판:
      • Travis CI의 무료 시험판은 10,000 빌드 크레딧를 제공하며, 공개 및 비공개 레포지토리 빌드에 사용할 수 있습니다.
  3. CircleCI
    • 무료 플랜 크레딧:
      • 무료 플랜 사용자는 매달 30,000 크레딧를 받습니다.
    • 크레딧 이월 불가:
      • 무료 플랜의 크레딧은 다음 달로 이월되지 않습니다.
    • 오픈 소스 프로젝트 크레딧:
      • 오픈 소스 프로젝트는 매달 400,000 크레딧 (리눅스용, 40,000 빌드 분에 해당) 및 25,000 크레딧 (맥 OS용, 500 빌드 분에 해당)을 받습니다.
  4. GitLab CI/CD
    • GitLab 사용 필요
      • GitLab CI/CD는 GitLab 저장소에 내장되어 있어, GitHub 또는 다른 VCS를 사용하는 경우 적합하지 않을 수 있습니다.
    • 설정과 학습 곡선
      • GitLab CI/CD 설정 역시 처음 사용하는 경우 다소 복잡하고 시간이 소요될 수 있습니다.

참 뭐가 많은 데 다음과 같이 단순하게 정리할 수 있습니다.

Jenkins 그 자체는 무료이지만, 별도의 서버 운용비가 필요하다! -> 사실상 무료가 아님 x

GitLab 은 GitLab에 내장된 도구! -> 다른 VCS에 적합하지 않다

Travis, Circle -> 무료 플랜에 주어지는 크레딧 정도만 무료이고, 이를 넘기면 유료이다. 근데 하루에 여러 번 커밋을 하느라 언제 없어질지 몰라 적합하지 않다!

 

즉, 저의 경우 GitHub Actions 가 가장 적합하다는 것을 알 수 있습니다!

정리

  1. CI 도구 선택 기준:
    • 사용자는 Jenkins, GitHub Actions, Travis CI, Circle CI, GitLab CI/CD 중에서 선택할 수 있습니다.
    • 각 도구는 고유의 장점과 간단한 사용법을 가지고 있습니다.
      예를 들어, Jenkins는 강력한 맞춤 설정 기능을 제공하지만, 설치 및 유지보수가 필요합니다.
  2. GitHub Actions의 선택:
    • 필자는 '빠르고, 무료로, 쉽게 구축하기'라는 기준을 바탕으로 GitHub Actions를 선택했습니다.
    • GitHub Actions는 무료 사용량, 간편한 설정, 직관적인 UI, GitHub과의 통합 등의 이점을 제공합니다.
  3. 다른 도구의 제한사항:
    • Jenkins는 추가적인 서버 운영 비용과 복잡한 설정이 필요합니다.
    • Travis CI와 CircleCI는 제한된 무료 크레딧을 제공하며, 크레딧을 초과할 경우 비용이 발생할 수 있습니다.
    • GitLab CI/CD는 GitLab 저장소와의 통합이 필요합니다.

참고

https://docs.travis-ci.com/user/billing-faq/

https://support.circleci.com/hc/en-us/articles/360049861131-When-will-free-or-open-source-credits-renew-#:~:text=Users%20on%20our%20Free%20plan,indicating%20the%20current%20payment%20cycle

 

728x90