🔧 GitLab CI/CD란?
GitLab CI/CD는 GitLab에서 제공하는 지속적 통합(CI) 및 지속적 배포(CD) 도구입니다.
코드를 푸시하면 자동으로 테스트, 빌드, 배포까지 실행할 수 있어 배포 자동화를 간편하게 구성할 수 있습니다.
🚀 자동 배포 흐름
- 개발자가 GitLab 저장소에 코드 푸시
- .gitlab-ci.yml 파일에 정의된 파이프라인 실행
- 빌드/테스트 후 서버로 코드 배포
- (선택) 성공 알림, 슬랙 메시지 등 후처리
📁 기본 파일 구조
자동 배포를 위해 가장 중요한 파일은 루트에 있는 .gitlab-ci.yml 입니다.
이 파일에 어떤 작업(단계, script 등)을 어떤 조건에서 실행할지 정의합니다.
🧪 예시: Node.js 프로젝트를 EC2에 자동 배포
stages:
- build
- deploy
variables:
APP_NAME: my-node-app
DEPLOY_PATH: /home/ubuntu/my-node-app
before_script:
- echo "💡 CI Job 시작..."
build:
stage: build
script:
- echo "✅ 코드 빌드 완료 (필요시 테스트 포함)"
only:
- main
deploy:
stage: deploy
only:
- main
script:
- echo "🚀 EC2로 배포 시작"
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- ssh-keyscan -H $EC2_HOST >> ~/.ssh/known_hosts
- rsync -avz --delete ./ $EC2_USER@$EC2_HOST:$DEPLOY_PATH
- ssh $EC2_USER@$EC2_HOST "cd $DEPLOY_PATH && npm install && pm2 restart $APP_NAME"
🔐 CI/CD 환경변수 설정
GitLab의 "Settings > CI/CD > Variables" 메뉴에서 아래 항목을 등록해야 합니다:
이름설명
SSH_PRIVATE_KEY | EC2 접속용 개인키 (PEM 내용 전체) |
EC2_HOST | EC2 퍼블릭 IP 또는 도메인 |
EC2_USER | 보통 ubuntu, ec2-user 등 |
💬 배포 알림 추가 (선택)
Slack, 이메일, 카카오톡 등으로 배포 완료 메시지를 보낼 수도 있습니다.
Slack Webhook을 등록해 아래와 같이 추가할 수 있습니다.
after_script:
- curl -X POST -H 'Content-type: application/json' \
--data '{"text":"✅ $CI_PROJECT_NAME 배포 완료!"}' \
$SLACK_WEBHOOK_URL
✅ 실무 팁
- 브랜치마다 배포 경로를 다르게 설정하고 싶다면 if, rules 문법을 활용하세요.
- 테스트가 통과했을 때만 배포하도록 설정하면 안전합니다.
- 서버에 .env 등 민감한 설정은 .gitignore로 제외하고, 서버 측에만 관리하세요.
- 배포 후 pm2 reload, docker restart, systemctl restart 등 원하는 방식으로 서비스 재시작 가능
📌 마무리
GitLab CI/CD는 복잡한 배포 과정을 자동화해 개발자들의 시간을 절약해줍니다.
한 번만 잘 설정해두면, 안정적이고 일관된 배포를 유지할 수 있으니 꼭 도입해보세요!
'삼분공부 > Server' 카테고리의 다른 글
[Linux] 서버 로그 파일 다운로드하는 가장 간단한 방법: scp 명령어 사용법 (0) | 2025.04.09 |
---|---|
[Server] 무중단 배포 중 동일 프로세스 중복 문제 해결하기 (0) | 2025.03.25 |