현재 재직중인 회사에 Devops 인프라가 구축이 되어 있지 않아, 많은 작업들(빌드 작업, 배포 작업, 인식률 스크립트 등등..)을 일일히 수작업으로 진행하고 있었습니다.
계속 차일피일 미루고 미루다, 새로오신 PM님의 권고로 CI/CD 작업을 진행하기로 하였습니다.
백엔드팀에서 전담하여 진행하기로 하였고 이전 Jenkins 구축도 재밌게 하였고 CI/CD는 연동하는 재미가 있어서 먼저 "제가 해보겠습니다!" 하고 손을 번쩍들어 전담을 맞게 되었습니다....
(Nooooooooo.. Stayyyyyyy!)
기존에 팀리드께서 CI/CD 구축을 위해 여러가지 툴(Jenkins, CircleCI, github actions, travis)들을 비교 하였고 그 중 CircleCI를 사용하기로 하였습니다.
❓ CircleCI란?
CircleCI는 GitHub, GitHub Enterprise 및 Atlassian Bitbucket 저장소를 모니터링하고 새 커밋에 대한 빌드를 론칭한다.[19] CircleCI는 도커(Docker) 컨테이너 또는 가상 시스템에서 빌드를 자동으로 테스트하고 패싱 빌드를 대상 환경에 배포한다. 대시보드 및 API를 통해 빌드의 상태와 빌드와 관련된 지표를 추적할 수 있으며 문제가 발생할 경우 통합된 슬랙(Slack)을 통해 팀에 통지한다.
SSH를 지원하므로 로컬에서 작업을 실행할 수 있으며 보안 조치를 통해 템퍼링을 방지할 수 있다.[17] CircleCI는 수동으로 승인될 때까지 작업을 일시 중지하는 워크플로 승인 기능도 제공한다.[20]
CircleCI는 Go, Java, Ruby, Python, Scala, Node.js, PHP, 하스켈을 비롯하여 Linux 또는 macOS에서 실행되는 기타 모든 언어를 지원한다.
CircleCI는 관리형 클라우드 서비스를 제공하며 무료 티어도 이용할 수 있다. CircleCI 플랫폼은 사설 서버(기업 방화벽 내)를 이용한 자체 호스팅 또는 클라우드에서 프라이빗 배포를 통해 이용할 수 있다. 클라우드 서비스는 처음에는 자체적으로 개발되었지만 지금은 HashiCorp의 Nomad와 쿠버네티스(Kubernetes)를 사용한다.
CircleCI는 지속적인 테스트 및 릴리스를 통해 위험을 줄이며 관리형 클라우드 서비스를 통해 CI 인프라 유지 관리 및 프로비저닝을 담당한다. 클라우드 서비스는 몇 분 안에 설정할 수 있지만 사용자 정의는 Jenkins보다 적게 허용된다. - 위키백과 발췌 -
좀더 개발자 차원에서 풀어보자면, 협업 진행시 혼자 개발을 하지 않으므로 대부분의 프로젝트에서 형상관리(Configuration Management)툴을 사용을 하는게 일반적입니다. 이렇다보니 같은 프로젝트에서도 소스 코드 및 파일들이 중구난방으로 관리 되지 못하는 경우가 많은데 이때 지속적인통합(Continuous Integration)
을 구현하여 프로젝트의 새로운 변경 사항이 정기적으로 빌드 및 테스트를 거쳐 공유된 레포지토리에 병합이 됩니다. 그리고 이러한 지속적인통합
으로 병합된 공유리포지토리에서 실제 고객이 사용 가능한 프로덕트 환경까지 자동으로 배포하는 지속적인배포(Continuous Deployment)
를 제공하는 플랫폼이 바로 CircleCI
입니다.
CI/CD의 아버지라 불리우는 Jenkins
에 비하여 초기 설정이나 운영하면서 생기는 리소스 관리 차원에서 훨씬 간편하고 효율적이라 할 수 있습니다.
👉 CircleCI 시작하기
Email, GitHub, GitLab, Bitbucket
중 하나를 선택하여 가입을 진행하면 됩니다. GitHub 가입의 경우 모든 저장소를 할지 Public 저장소만 할지 정할 수 있습니다! 여기선 GitHub로 진행하겠습니다..circleci/config.yml
을 사용합니다. 해당 경로의 파일이 있는 branch 값을 입력해야 합니다..circleci/config.yml
이 만들어진걸 확인 할 수 있습니다..circleci/config.yml
파일을 아래와 같이 변경 후 commit을 해보겠습니다.say-hello-workflow
을 클릭하고 등록된 job인 say-hello
를 클릭하면 commit한 내용인 steps > run > name
의 값과 command
로 명령어의 결과를 확인 할 수 있습니다.이로써 circleci와 github을 연동에 성공 하였습니다! 다음에는 circleci에서 사용되는 용어에 대한 개념을 정리 해보겠습니다!
다음꺼 언제 나오나요?