GitHub Actions로 CD (Continuous Deployment) 설정하기
GitHub Actions를 사용하여 CD(Continuous Deployment) 파이프라인을 구축하는 방법을 상세히 설명
GitHub Actions로 CD (Continuous Deployment) 설정하기
소프트웨어 개발에서 지속적 배포(Continuous Deployment, CD) 는 검증된 코드를 자동으로 서버나 클라우드 환경에 배포하는 과정입니다. GitHub Actions를 활용하면 코드 변경 사항이 반영될 때마다 배포를 자동화할 수 있습니다.
1. CD(Continuous Deployment)란?
CD(지속적 배포) 개념
CD는 CI(Continuous Integration)를 거친 코드가 자동으로 프로덕션 환경에 배포되는 프로세스를 의미합니다. CI/CD를 함께 사용하면 개발부터 배포까지의 전체 과정을 자동화할 수 있습니다.
CD의 주요 목표
- 빠르고 안정적인 배포
- 자동화된 프로세스를 통한 배포 오류 최소화
- 지속적인 업데이트 제공으로 사용자 경험 향상
CD와 GitHub Actions GitHub Actions를 사용하면 코드가 변경될 때마다 자동으로 빌드, 테스트 및 배포가 가능합니다.
2. GitHub Actions로 CD 설정하기
.github/workflows/ 폴더 생성
GitHub Actions에서 CD를 실행하려면 .github/workflows/
폴더 내에 YAML 파일을 작성해야 합니다.
📁 프로젝트 구조 예시
1
2
3
4
5
6
📂 my-project/
├── 📂 .github/
│ └── 📂 workflows/
│ └── cd.yml # CD 워크플로우 파일
├── 📂 src/
└── 📄 README.md
3. CD Workflow 작성하기
기본 CD Workflow 예제 (cd.yml
)
아래는 GitHub Actions를 사용하여 CD를 설정하는 기본적인 Workflow 예제입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
name: CD Workflow # 워크플로우 이름
on:
push:
branches:
- main # main 브랜치에 코드가 푸시될 때 실행
jobs:
deploy:
runs-on: ubuntu-latest # 실행 환경 지정
steps:
- name: Checkout Repository # 코드 가져오기
uses: actions/checkout@v4
- name: Set up Node.js # Node.js 환경 설정
uses: actions/setup-node@v4
with:
node-version: '16'
- name: Install dependencies # 패키지 설치
run: npm install
- name: Build project # 프로젝트 빌드
run: npm run build
- name: Deploy to Server # 서버에 배포
env:
SSH_PRIVATE_KEY: $
run: |
echo "$SSH_PRIVATE_KEY" > private_key && chmod 600 private_key
scp -i private_key -r ./dist user@server:/var/www/project
ssh -i private_key user@server "systemctl restart nginx"
이 Workflow의 동작 방식
main
브랜치에 코드가 푸시될 때 실행- Ubuntu 환경에서 실행
- 저장소의 코드를 가져옴 (Checkout)
- Node.js 환경을 설정하고, 패키지를 설치
- 프로젝트를 빌드하고, 서버에 업로드
- 서버에서 Nginx를 재시작하여 반영
4. CD Workflow 상세 설명
Workflow 트리거 (on
속성)
CD Workflow가 실행되는 조건을 설정할 수 있습니다.
1
2
3
4
on:
push:
branches:
- main
push
: 코드가 특정 브랜치에 푸시될 때 실행됨branches: [main]
:main
브랜치에만 적용됨
Job과 실행 환경 (jobs
및 runs-on
)
1
2
3
jobs:
deploy:
runs-on: ubuntu-latest
- 배포 작업을 수행하는 Job을 정의
runs-on
을 사용하여 실행 환경을 지정 (예:ubuntu-latest
)
Steps (단계별 실행 내용)
1) 저장소 코드 가져오기
1
2
- name: Checkout Repository
uses: actions/checkout@v4
저장소의 코드를 가져와 CD 환경에서 사용할 수 있도록 합니다.
2) Node.js 환경 설정
1
2
3
4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '16'
- Node.js 16 버전을 설치하여 프로젝트를 빌드할 수 있도록 합니다.
3) 패키지 설치 및 빌드
1
2
3
4
5
- name: Install dependencies
run: npm install
- name: Build project
run: npm run build
- 프로젝트의 의존성을 설치한 후, 빌드를 실행합니다.
4) 서버에 배포
1
2
3
4
5
6
7
- name: Deploy to Server
env:
SSH_PRIVATE_KEY: $
run: |
echo "$SSH_PRIVATE_KEY" > private_key && chmod 600 private_key
scp -i private_key -r ./dist user@server:/var/www/project
ssh -i private_key user@server "systemctl restart nginx"
- GitHub Secrets를 사용하여 보안 키 관리
scp
명령어로 빌드된 파일을 서버에 업로드ssh
명령어로 서버에서 Nginx를 재시작하여 변경 사항 반영
5. GitHub Secrets 설정
배포 과정에서 SSH 키를 안전하게 저장하려면 GitHub Secrets를 사용해야 합니다.
Secrets 설정 방법
- GitHub 저장소로 이동
- Settings → Secrets and variables → Actions 클릭
- New repository secret 클릭
Name
:SSH_PRIVATE_KEY
,Value
: 서버의 SSH 개인 키 입력
6. 마무리
GitHub Actions로 CD 설정을 정리하면?
- CD는 검증된 코드를 자동으로 서버에 배포하는 과정
- GitHub Actions의
.github/workflows/cd.yml
을 설정하여 자동 배포 가능 - 배포 작업에는 코드 체크아웃, 환경 설정, 빌드, 서버 업로드 포함
- GitHub Secrets를 활용하여 보안 강화 가능
This post is licensed under CC BY 4.0 by the author.