CircleCI는 클라우드 기반 CI/CD 플랫폼이다. 빠른 빌드 속도, 풍부한 Orb 생태계, Docker 레이어 캐싱, 병렬 실행으로 개발팀의 배포 주기를 단축한다.
.circleci/config.yml 예시
yaml
version: 2.1
orbs:
node: circleci/node@5
docker: circleci/docker@2
aws-ecr: circleci/aws-ecr@9
executors:
node-executor:
docker:
- image: cimg/node:20.0
resource_class: medium
jobs:
test:
executor: node-executor
parallelism: 4
steps:
- checkout
- node/install-packages:
cache-version: v2
- run:
name: 테스트 분할 실행
command: |
TEST_FILES=$(circleci tests glob "src/**/*.test.ts" | circleci tests split --split-by=timings)
npx jest $TEST_FILES --coverage
- store_test_results:
path: test-results
- store_artifacts:
path: coverage
build-push:
machine: true
steps:
- checkout
- aws-ecr/build-and-push-image:
repo: my-app
tag: $CIRCLE_SHA1
deploy:
executor: node-executor
steps:
- run: |
curl -X POST $DEPLOY_WEBHOOK \
-H "Authorization: Bearer $DEPLOY_TOKEN" \
-d '{"version":"'"$CIRCLE_SHA1"'"}'
workflows:
ci-cd:
jobs:
- test
- build-push:
requires: [test]
filters:
branches:
only: main
- deploy:
requires: [build-push]
filters:
branches:
only: main
GitHub Actions vs CircleCI 비교
| 항목 | GitHub Actions | CircleCI |
|---|
| 통합 | GitHub 기본 | 범용 |
| Orb/Action 생태계 | 풍부 | 풍부 |
| 병렬 테스트 | 수동 설정 | 내장 지원 |
| 무료 한도 | 2,000분/월 | 6,000 크레딧/월 |
| 자체 호스팅 | 지원 | 지원 (Server) |
관련 문서