서클CI에서 푸시 후 자동 배포 설정 방법은?
_____A1: 서클CI에서 푸시 후 자동 배포는 코드 저장소에 변경사항을 푸시(push)할 때마다 지정된 배포 작업이 자동으로 실행되어, 코드가 자동으로 빌드되고 검증된 후 원하는 서버나 클라우드 환경에 배포되는 프로세스를 말합니다.
---
Q2: 서클CI에서 자동 배포를 설정하기 위한 기본 단계는 무엇인가요?
A2: 기본 단계는 다음과 같습니다.
1. 서클CI 계정과 GitHub, GitLab 등 코드 저장소 연동
2. `.circleci/config.yml` 파일 생성 및 워크플로우 정의
3. 빌드 및 테스트 작업(job) 작성
4. 배포 작업(job) 작성 및 워크플로우에 연결
5. 필요한 환경 변수(API 키, 배포 서버 정보) 서클CI 프로젝트 설정에 등록
6. 저장소에 푸시 후 자동 실행 확인
---
Q3: 자동 배포에 필요한 `.circleci/config.yml` 기본 구조는 어떻게 되나요?
A3: 기본 구조 예시는 다음과 같습니다.
```yaml
version: 2.1
jobs:
build:
docker:
- image: cimg/node:14.17
steps:
- checkout
- run: npm install
- run: npm test
deploy:
docker:
- image: cimg/base:stable
steps:
- checkout
- run: ./deploy_script.sh 실제 배포 스크립트 실행
workflows:
version: 2
build_and_deploy:
jobs:
- build
- deploy:
requires:
- build
filters:
branches:
only: main
```
이 예시는 `main` 브랜치에 푸시될 경우, 먼저 빌드와 테스트를 수행하고 성공 시 배포 작업을 실행합니다.
---
Q4: 배포 스크립트는 어떻게 작성하나요?
A4: 배포 스크립트는 배포 대상 환경에 따라 다릅니다. 예를 들어 SSH를 통한 서버 배포는 다음과 같이 작성할 수 있습니다.
```bash
!/bin/bash
ssh [email protected] 'cd /path/to/app && git pull origin main && npm install && pm2 restart app'
```
서클CI에서 이 스크립트를 실행하기 위해서는 서버 접속 키를 환경 변수 또는 서클CI 프로젝트 설정의 SSH 키로 등록해야 합니다.
---
Q5: 배포 시 필요한 민감한 정보(예: API 키, SSH 키)는 어떻게 관리하나요?
A5: 서클CI 프로젝트의 Settings > Environment Variables 메뉴에서 민감한 정보를 환경변수로 등록하여 코드에 직접 포함하지 않고 안전하게 사용할 수 있습니다. 예: `DEPLOY_SSH_KEY`, `API_TOKEN`
---
Q6: 특정 브랜치에만 자동 배포를 하려면 어떻게 설정하나요?
A6: `workflows` 내 `filters` 설정을 이용합니다.
```yaml
filters:
branches:
only:
- main
```
위 설정은 `main` 브랜치에 푸시될 때만 배포job이 실행됩니다.
---
Q7: 자동 배포 테스트를 할 때 주의사항은 무엇인가요?
A7:
- 배포 스크립트에서 실제 서비스에 영향을 주는 명령을 신중히 검토하세요.
- 배포 전에 충분한 로컬 테스트 또는 스테이징 환경 테스트 필수
- 서클CI 로그를 꼼꼼히 확인해 배포 과정 오류 유무 확인
- SSH 키나 토큰 권한 최소화 권장
---
Q8: 서클CI 배포 실패 시 알림을 받을 수 있나요?
A8: 네, Notifications 설정을 통해 이메일, 슬랙, 줌 등 다양한 채널로 실패 알림을 받을 수 있습니다. 설정은 서클CI 프로젝트의 Settings > Notifications 에서 가능합니다.
---
요약
1. `.circleci/config.yml`에 빌드-배포 job 작성
2. 환경 변수 및 배포 키 등록
3. 필터로 배포 대상 브랜치 지정
4. 배포 스크립트 준비 및 커밋 후 푸시
5. 푸시 시 자동으로 워크플로우 실행되고 배포까지 완료
이 과정을 통해 서클CI에서 푸시 후 자동 배포를 효율적으로 수행할 수 있습니다.
CircleCI를 사용하여 CI/CD 파이프라인을 구축하고, GitHub 또는 Bitbucket에 푸시된 코드 변경을 자동으로 배포하는 방법은 다음과 같습니다.
1. CircleCI 설정 파일 (.circleci/config.yml) CircleCI의 주요 설정 파일은 `.circleci/config.yml`입니다.
이 파일에서 파이프라인의 모든 단계와 작업을 정의합니다.
```yaml version:
2.1 jobs: build: docker: - image: circleci/python:3.8 필요한 Docker 이미지로 변경 steps: - checkout - run: name: Install dependencies command: pip install -r requirements.txt - run: name: Run tests command: pytest deploy: docker: - image: circleci/python:3.8 필요한 Docker 이미지로 변경 steps: - checkout - run: name: Deploy to production command: | echo "Deploying to production server..." SSH를 통해 배포 ssh user@your-server "cd /path/to/app && git pull && your-deploy-command" workflows: version: 2 build_and_deploy: jobs: - build - deploy: requires: - build ```
2. 배포 조건 설정 위 예제에서는 배포 작업이 `build` 작업이 성공적으로 완료된 후에 수행되도록 설정했습니다.
필요에 따라 조건을 추가하여 특정 브랜치에만 배포하도록 설정할 수 있습니다.
```yaml deploy: docker: - image: circleci/python:3.8 steps: - checkout - run: name: Deploy to production command: | if [ "${CIRCLE_BRANCH}" == "main" ]; then ssh user@your-server "cd /path/to/app && git pull && your-deploy-command" else echo "Not on main branch, skipping deployment." fi ```
3. SSH 키 설정 배포를 위해 SSH를 사용할 경우, CircleCI에서 서버에 접근할 수 있도록 SSH 키를 설정해야 합니다.
1. SSH 키 생성: 로컬에서 SSH 키를 생성합니다.
```bash ssh-keygen -t rsa -b 4096 -C "[email protected]" ```
2. 공개 키를 서버에 추가: 생성된 공개 키 (`id_rsa.pub`)를 SSH 키를 사용하는 서버의 `~/.ssh/authorized_keys`에 추가합니다.
3. 비공개 키를 CircleCI 환경 변수에 추가: - CircleCI 대시보드로 가서, 프로젝트 설정에서 "SSH Keys" 섹션으로 이동합니다.
- "Add SSH Key"를 클릭한 후, 비공개 키 (`id_rsa`)를 추가하고, 해당 키가 접근할 수 있는 도메인을 설정합니다.
4. 환경 변수 설정 서버에 필요한 환경 변수를 CircleCI의 환경 변수 섹션에 추가합니다.
이는 배포 과정에서 필요한 민감한 정보 (예: 데이터베이스 비밀번호, API 키 등)를 안전하게 처리합니다.
5. 커밋 및 푸시 이제 모든 설정을 완료했습니다.
`.circleci/config.yml` 파일을 커밋하고 원격 저장소에 푸시하세요.
CircleCI가 자동으로 파이프라인을 트리거하고, 코드가 배포됩니다.
6. 배포 과정 모니터링 CircleCI 대시보드에서 워크플로우를 모니터링하고, 로그를 통해 배포 과정에서 발생하는 오류를 확인할 수 있습니다.
이와 같은 방법을 통해 CircleCI를 사용하여 푸시 후 자동 배포를 설정할 수 있습니다.
각 단계는 프로젝트와 환경에 따라 조정할 수 있으며, 필요한 경우 추가적인 설정을 적용할 수 있습니다.
작성자:
이수현 [비회원]
| 작성일자: 1년 전
2025-03-22 03:01:56
조회수: 182 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 182 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.