CI/CD란 Continuous Integration, Continuous Deployment라는 의미를 가지고 있으며 테스트(Test), 통합(Merge), 배포(Deploy)의 과정을 자동화 하는 걸 의미한다.

자주 사용하는 GitHub Actions와 Jenkins의 차이점
| 구분 | GitHub Actions | Jenkins |
|---|---|---|
| 형태 | 클라우드형 (GitHub 내장) | 설치형 (온프레미스/서버 구축) |
| 설정 방식 | YAML 파일 (.github/workflows) | Jenkinsfile 또는 Web UI 구성 |
| 러너 관리 | GitHub-hosted 또는 Self-hosted | Agent(Node) 직접 설치 및 관리 |
| 초기 설정 난이도 | 매우 쉬움 | 복잡함 (서버 + 플러그인 구성 필요) |
| 비용 | GitHub 요금제 기준 (무료분 제한) | 서버만 있으면 무료 (오픈소스) |
| 확장성 | GitHub Marketplace의 Actions 활용 | 수천 개 플러그인으로 확장 가능 |
| 보안 / 접근성 | GitHub OAuth 기반, 외부 접근 용이 | 내부망, 사내 배포 환경에 유리 |
| 속도 / 성능 | GitHub 인프라 의존 (제한 있음) | 서버 성능에 따라 자유롭게 확장 가능 |
| 대규모 파이프라인 | 단순 워크플로우에 적합 | 복잡한 파이프라인/병렬 빌드에 강함 |
| 유지보수 | 자동 업데이트, 관리 쉬움 | 플러그인 버전 충돌 및 관리 필요 |
| 추천 사용 환경 | 개인/스타트업/클라우드 중심 | 대기업/내부망/대규모 프로젝트 |
빠른 구축과 GitHub 연동 중심일 경우 -> GitHub Actions
자유로운 커스터마이징과 내부망 운영 중심(별도의 서버 필요) -> Jenkins
GitHub Actions를 로직을 실행시킬 수 있는 일종의 컴퓨터이다. CI/CD 과정에서 GitHub Actions는 "빌드, 테스트, 배포"에 대한 로직을 실행하는 역할을 하게 된다.
✅ GitHub Acitons의 CI/CD 일반적인 전체 흐름

코드를 작성 후 Commit
GitHub에 Push
Push를 감지해서 GitHub Acitons에 작성한 로직이 실행
a. 빌드(Build)
b. 테스트(Test)
c. 서버로 배포(Deploy)
서버에서 배포된 최신 코드로 서버를 재실행
# Workflow : 한 개의 작업의 단위
# Workflow 의 이름을 의미한다.
name: GitHub Actions 실행시켜보기
# Event : 실행되는 시점을 설정
# main 이라는 브랜치에 push 될 때 아래 Workflow를 실행
on:
push:
branches:
- main
# 하나의 Workflow 는 1개 이상의 Job으로 구성됩니다.
# 여러 Job은 기본적으로 병렬적으로 수행된다.
jobs:
# Job 을 식별하기 위한 id
My-Deploy-Job:
# ubuntu 환경 / 가장 최신 버전 (latest)
runs-on: ubuntu-latest
# Step : 특정 작업을 수행하는 가장 작은 단위
# Job 은 여러 Step들로 구성되어 있다.
steps:
- name: Hello World 찍기
run: echo "Hello World" # 리눅스 명령어를 사용
- name: 여러 명령어 문장 작성하기
run: |
echo "Good"
echo "Morning"
- name: GitHub Actions 자체에 저장되어 있는 변수 사용해보기
run: |
echo $GITHUB_SHA
echo $GITHUB_REPOSITORY
- name: 아무한테나 노출이 되면 안 되는 값
run: |
echo ${{ secrets.MY_NAME }}
echo ${{ secrets.MY_HOBBY }}





$GITHUB_SHA : github의 commit ID 값
$GITHUB_REPOSITORY : github 레포지토리 경로
Settings -> Secrets and variables -> Actions -> New repository secret 클릭




1️⃣ Event
트리거(Trigger) 역할
예 : push, pull_request, schedule, workflow_dispatch(수동 실행) 등
2️⃣ Workflow
.github/workflows/*.yml 파일 하나 = Workflow 하나
전체적인 파이프라인을 정의 (예 : 빌드 + 테스트 + 배포)
3️⃣ Job
독립된 실행 단위
여러 Job이 병렬 또는 순차(needs:)로 실행 가능
4️⃣ Step
Event (예: push 발생)
↓
Workflow (트리거된 YAML)
↓
Runner 1 → Job 1
├─ Step 1: Run Action
├─ Step 2: Run Script
├─ Step 3: Run Script
└─ Step 4: Run Action
↓
Runner 2 → Job 2
├─ Step 1: Run Action
├─ Step 2: Run Script
└─ Step 3: Run Script
Event가 발생하면 Workflow가 실행되고, Workflow는 여러 Job으로 구성되어 있으며, 각 Job은 여러 Step(명령 또는 Action)으로 이루어집니다.