GitHub Actions로 CI (Continuous Integration) 설정하기
GitHub Actions를 활용하여 CI 파이프라인을 설정하는 방법을 단계별로 설명
소프트웨어 개발에서 지속적 통합(Continuous Integration, CI) 은 코드 변경 사항을 자주, 자동으로 테스트하고 병합하는 중요한 과정입니다. GitHub Actions를 사용하면 코드 변경이 있을 때마다 자동으로 테스트를 실행하고, 빌드를 검증할 수 있습니다.
1. CI(Continuous Integration)란?
CI(지속적 통합) 개념
지속적 통합(CI)은 코드 변경 사항이 발생할 때마다 자동으로 빌드 및 테스트를 수행하는 프로세스입니다. 이를 통해 코드 품질을 유지하고, 버그를 조기에 발견할 수 있습니다.
CI의 주요 목표
- 자동화된 테스트를 통해 코드의 안정성을 보장
- 팀원 간의 코드 변경 사항을 빠르게 통합
- 버그를 조기에 감지하여 해결 비용 절감
CI와 GitHub Actions
GitHub Actions는 CI/CD를 자동화하는 도구로, GitHub 저장소 내에서 손쉽게 CI 프로세스를 설정할 수 있습니다.
2. GitHub Actions로 CI 설정하기
.github/workflows/ 폴더 생성
GitHub Actions에서 CI를 실행하려면 .github/workflows/
폴더 내에 YAML 파일을 작성해야 합니다.
📁 프로젝트 구조 예시
1
2
3
4
5
6
📂 my-project/
├── 📂 .github/
│ └── 📂 workflows/
│ └── ci.yml # CI 워크플로우 파일
├── 📂 src/
└── 📄 README.md
3. CI Workflow 작성하기
기본 CI Workflow 예제 (ci.yml
)
아래는 GitHub Actions를 사용하여 CI를 설정하는 기본적인 Workflow 예제입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
name: CI Workflow # 워크플로우 이름
on: [push, pull_request] # 코드가 푸시되거나 PR이 생성될 때 실행
jobs:
test:
runs-on: ubuntu-latest # 실행 환경 지정
steps:
- name: Checkout Repository # 코드 가져오기
uses: actions/checkout@v4
- name: Set up Python # Python 환경 설정
uses: actions/setup-python@v4
with:
python-version: '3.9'
- name: Install dependencies # 패키지 설치
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Run tests # 테스트 실행
run: pytest
이 Workflow의 동작 방식
- 코드가 push 또는 pull request 될 때 실행됨
- GitHub에서 제공하는 Ubuntu 실행 환경을 사용
- 저장소의 코드를 가져옴 (Checkout)
- Python 환경을 설정하고, 패키지를 설치
- 테스트 스크립트(
pytest
) 실행
4. CI Workflow 상세 설명
Workflow 트리거 (on
속성)
CI Workflow가 실행되는 조건을 설정할 수 있습니다.
1
on: [push, pull_request]
push
: 코드가 푸시될 때 실행됨pull_request
: PR이 생성될 때 실행됨
Job과 실행 환경 (jobs
및 runs-on
)
1
2
3
jobs:
test:
runs-on: ubuntu-latest
- CI의 각 단계는 Job으로 구성됨
runs-on
을 사용하여 실행 환경을 지정 (예:ubuntu-latest
)
Steps (단계별 실행 내용)
1) 저장소 코드 가져오기
1
2
- name: Checkout Repository
uses: actions/checkout@v4
GitHub 저장소의 코드를 가져와 CI 환경에서 사용할 수 있도록 합니다.
2) Python 환경 설정
1
2
3
4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.9'
- Python 3.9 버전을 설치하여 테스트 환경을 구성합니다.
3) 패키지 설치
1
2
3
4
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- 필요한 의존성 패키지를 설치합니다.
4) 테스트 실행
1
2
- name: Run tests
run: pytest
pytest
를 실행하여 코드가 정상 동작하는지 확인합니다.
5. CI 실행 결과 확인
CI Workflow가 실행되면 GitHub에서 실행 결과를 확인할 수 있습니다.
GitHub Actions 실행 로그 확인
- GitHub 저장소로 이동
- Actions 탭 클릭
- 실행된 CI Workflow 선택
- 실행 로그를 확인하고, 에러 발생 시 디버깅 가능
6. CI 최적화 및 추가 기능
캐싱을 활용한 속도 최적화 패키지 설치 시간을 줄이기 위해 캐싱을 사용할 수 있습니다.
1
2
3
4
5
6
7
- name: Cache dependencies
uses: actions/cache@v3
with:
path: ~/.cache/pip
key: $-pip-$
restore-keys: |
$-pip-
여러 Python 버전에서 테스트 실행 여러 Python 버전에서 테스트하려면 matrix 전략을 사용할 수 있습니다.
1
2
3
strategy:
matrix:
python-version: [3.7, 3.8, 3.9, 3.10]
7. 마무리
GitHub Actions로 CI 설정을 정리하면?
- CI는 코드 변경 시 자동으로 테스트를 실행하여 코드 품질을 유지
- GitHub Actions의
.github/workflows/ci.yml
을 설정하여 CI 파이프라인 구축 - 테스트, 패키지 설치, 환경 설정 등의 단계를 포함하여 실행 가능
- 실행 결과는 GitHub Actions에서 확인 및 디버깅 가능
- 캐싱과 매트릭스 전략을 활용해 CI 최적화 가능