CI
- 지속적인 통합
- 버그 수정, 새로운 기능 개발한 코드가 주기적으로 병합되는 것
- 코드가 합쳐질 때마다 자동으로 검증해주는 안전장치
필요한 이유
- 코드 변경 사항을 주기적으로 빈번하게 merge
- 통합 단계의 자동화
장점
- 개발 생산성 향상
- 문제점을 빠르게 발견
- 코드의 퀄리티 향상
GitHub Actions
- Github에서 제공하는 CI/CD 도구
- 별도 서버 필요 없음
- Github Repository에 설정 파일만 추가하면 사용 가능
Github Actions CI 구성
name: Run Test
on:
pull_request:
branches: [ develop ]
push:
branches: [ develop ]
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout source
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
cache: gradle
- name: Grant execute permission
run: chmod +x gradlew
- name: Run unit tests
run: ./gradlew test
name: Run Test : actions 이름 github 페이지에서 확인 가능
on : Event Trigger 특정 액션 설정
pull_request : 해당 Branch에서 일어나면 동작을 수행
push : 해당 Branch에서 일어나면 동작을 수행
jobs : 실제 어떤 작업을 실행할 지에 대한 명시
steps : 실제 실행 스크립트 (순서대로 실행)
uses : github actions에서 제공하는 플러그인을 실행
with : plugin 파라미터
동작 흐름
- develop 브랜치에 push 또는 PR 생성
- github Actions 실행
- ubuntu 환경에서 JDK 17 설치
- Gradle 테스트 실행
- 테스트 실패하면 PR merge 불가
- 테스트 성공하면 다음 단계(CD) 진행 가능
정리
- CI는 코드 품질을 자동으로 보장하기 위한 과정
- github actions을 사용하면 쉽게 CI 구성 가능
- CI는 빠른 피드백이 중요해서 test 위주로 구성
- 이 단계가 있어야 CD를 자연스럽게 확장 가능
실제 한 것
