배포 자동화를 위한 Jenkins + Git 연동 가이드
복잡한 수동 배포, 아직도 하고 계신가요? Jenkins와 Git을 연동하면 빌드부터 배포까지 한 번에 자동화할 수 있습니다.
안녕하세요, IT실무와 DevOps를 연구하는 ICT리더 리치입니다.
여러 프로젝트를 운영하다 보면 개발자가 커밋할 때마다 배포를 반복해야 하는 번거로움이 있죠. 이럴 때 Jenkins와 Git을 연동하면 매우 효율적인 배포 파이프라인을 구축할 수 있습니다.
이 포스팅에서는 Jenkins 설치부터 Git 연동, 실제 자동화 예제까지 초보자도 따라 할 수 있도록 쉽게 정리해드릴게요. 지금부터 자동 배포의 세계로 함께 들어가 보시죠!
📌 바로가기 목차
| 자동 배포 셋업 실무 장면 - Jenkins + Git 사용 |
1. Jenkins 설치 및 기본 설정
Jenkins는 오픈소스 CI 도구로, 자동화 파이프라인 구성에 가장 많이 사용되는 툴입니다. 리눅스 또는 윈도우 환경에서 설치할 수 있으며, Docker 이미지로도 간편하게 실행 가능합니다.
| 항목 | 설명 |
|---|---|
| 설치 방법 | 공식 사이트 또는 Docker Hub 이용 가능 |
| 기본 포트 | 8080 (브라우저에서 localhost:8080으로 접속) |
| 초기 비밀번호 | 설치 후 콘솔 로그에서 확인 가능 |
Docker를 활용하여 Jenkins를 빠르게 설치하는 방법은 아래와 같습니다. 이 방법은 실습용 또는 소규모 운영 환경에 적합합니다.
# Jenkins Docker 설치
docker network create jenkins
docker volume create jenkins_home
docker run -d --name jenkins-blueocean \
--restart=on-failure \
--network jenkins \
-p 8080:8080 -p 50000:50000 \
-v jenkins_home:/var/jenkins_home \
jenkins/jenkins:lts
# 초기 비밀번호 확인
docker exec jenkins-blueocean cat /var/jenkins_home/secrets/initialAdminPassword
2. Git Webhook을 통한 자동 트리거 설정
GitHub나 GitLab 등의 저장소에서 Jenkins로 푸시 이벤트가 발생할 때 자동으로 빌드를 시작하려면 Webhook 설정이 필요합니다. Jenkins의 "Git plugin"을 설치하고, 다음과 같은 설정을 통해 Git과의 연동을 완료합니다.
| 설정 항목 | 설명 |
|---|---|
| Git 저장소 URL | HTTPS 또는 SSH 형식으로 입력 |
| 자격 증명 | Git 접근을 위한 Token 또는 SSH 키 등록 |
| Webhook URL | http://your-jenkins-url/github-webhook/ |
GitHub 저장소에서 커밋 푸시 시 Jenkins가 자동으로 트리거되도록 Webhook 설정을 구성하는 JSON 예시입니다.
{
"name": "web",
"active": true,
"events": ["push"],
"config": {
"url": "http://your-jenkins-url/github-webhook/",
"content_type": "json",
"insecure_ssl": "0",
"secret": "your-secret-token"
}
}
3. Jenkins Pipeline Script 기본 구조
Jenkins에서는 declarative pipeline을 통해 빌드/배포 과정을 스크립트화할 수 있습니다. 아래는 가장 기본적인 pipeline 구조 예시입니다.
pipeline {
agent any
environment {
NODE_ENV = 'production'
}
stages {
stage('Checkout') {
steps {
git credentialsId: 'git-token-id', url: 'https://github.com/your-org/your-repo.git'
}
}
stage('Install') {
steps {
sh 'npm ci'
}
}
stage('Test') {
steps {
sh 'npm run test'
}
}
stage('Build') {
steps {
sh 'npm run build'
}
}
stage('Deploy') {
steps {
sh './deploy.sh'
}
}
}
}
![]() |
| Jenkins + Git 연동 기반 배포 자동화 전체 흐름 요약 |
4. Node.js 애플리케이션 자동 배포 예시
Jenkins와 Git을 연동하면 Node.js 프로젝트의 자동 배포도 간단하게 설정할 수 있습니다. 예를 들어 GitHub에 푸시하면 Jenkins가 자동으로 코드를 가져오고, 테스트 및 빌드 후 서버에 배포하는 전체 흐름을 구성할 수 있습니다.
| 단계 | 명령어 또는 작업 |
|---|---|
| 1. 코드 가져오기 | git clone 또는 Jenkins 내 Git 설정 |
| 2. 의존성 설치 | npm install |
| 3. 테스트 실행 | npm test |
| 4. 배포 스크립트 실행 | ./deploy.sh 또는 pm2 restart |
아래는 Node.js 앱을 pm2를 사용해 배포하는 deploy.sh 스크립트 예시입니다.
#!/bin/bash
APP_DIR="/var/www/myapp"
GIT_BRANCH="main"
echo "📁 디렉토리 이동"
cd $APP_DIR
echo "📥 최신 소스코드 가져오기"
git pull origin $GIT_BRANCH
echo "📦 의존성 설치"
npm install
echo "🔨 앱 빌드"
npm run build
echo "🚀 앱 실행"
pm2 restart myapp || pm2 start dist/app.js --name myapp
echo "✅ 배포 완료"
5. CI/CD 성공을 위한 체크리스트
CI/CD를 구축할 때는 단순히 자동화만 중요한 것이 아니라, 코드 품질과 테스트, 보안 설정까지 포함한 종합적인 검토가 필요합니다. 다음 체크리스트를 통해 성공적인 자동화를 점검해보세요.
- Git 브랜치 전략 (main/dev 등)을 명확히 정의했는가?
- Pull Request 시 자동 테스트가 동작하는가?
- 보안 취약점 스캔을 주기적으로 수행하고 있는가?
- 배포 실패 시 롤백할 수 있는 시스템이 존재하는가?
Shell 스크립트를 통해 CI/CD 전반에 대한 상태를 점검하는 자동화 예시입니다.
#!/bin/bash
echo "✅ 브랜치 확인"
git branch
echo "🔍 테스트 코드 검사"
if npm run test; then
echo "✅ 테스트 통과"
else
echo "❌ 테스트 실패"
exit 1
fi
echo "🔐 보안 점검 (npm audit)"
npm audit --production
echo "📦 배포 가능 상태 점검 완료"
6. Jenkins 연동 시 자주 발생하는 오류 해결법
Jenkins와 Git 연동 시 다양한 오류가 발생할 수 있습니다. 대표적인 오류와 해결 방법은 다음과 같습니다.
- GitHub Webhook이 작동하지 않을 때 → 방화벽 포트(8080) 확인
- "Permission denied (publickey)" 오류 → SSH 키 재등록 및 권한 설정 확인
- 빌드 후 배포 스크립트 실패 → 실행 권한(chmod +x) 및 경로 점검
Jenkins의 콘솔 로그를 통해 자주 발생하는 오류를 탐지하는 Groovy Script 예시입니다.
def log = manager.build.logFile.text
if (log.contains("Permission denied")) {
println "🚨 SSH 권한 오류 감지됨"
}
if (log.contains("command not found")) {
println "⚠️ 스크립트 내 명령어 오류"
}
if (log.contains("npm ERR!")) {
println "❌ npm 관련 오류 발생"
}
println "✅ 로그 검사 완료"
![]() |
| 배포 자동화를 위한 Jenkins + Git 연동 과정 요약 - 실무자 가이드 |
7. 자주 묻는 질문 (FAQ)
가능합니다. GitHub Actions, GitLab CI, Bitbucket Pipelines 등의 SaaS CI/CD 플랫폼을 사용할 수 있습니다.
네, 가능하며 가장 간편한 설치 방법 중 하나입니다. docker run으로 빠르게 설치 및 실행이 가능합니다.
네, Jenkins에 Git 자격 증명을 등록하여 Private 저장소도 문제없이 접근할 수 있습니다.
Slack, Email, Webhook 등 다양한 방식으로 Jenkins가 알림을 보낼 수 있도록 설정 가능합니다.
네, 대부분의 Jenkins 플러그인은 무료이며, 오픈소스로 제공되어 자유롭게 설치 및 사용 가능합니다.
8. 마무리 요약
✅ Jenkins와 Git을 이용한 배포 자동화, 이제는 필수입니다
반복적인 수동 배포로 인한 시간 낭비와 오류를 줄이기 위해, Jenkins와 Git 연동은 가장 강력한 자동화 솔루션입니다.
본 포스팅에서는 설치부터 Webhook 설정, Pipeline 스크립트, 배포 예시까지 실무 중심으로 소개해드렸습니다.
CI/CD 파이프라인을 구축하면, 개발자의 생산성은 물론 서비스의 안정성까지 획기적으로 향상됩니다.
지금 바로 Git 저장소와 Jenkins를 연결하여 자동화를 경험해보세요.
개발은 더 빠르게, 배포는 더 안전하게!


댓글
댓글 쓰기