Post

Expo 프로젝트에 GitHub Actions CI 구축하기

Expo 프로젝트에 GitHub Actions CI 구축하기

Expo 프로젝트에 GitHub Actions CI 구축하기

CI/CD 파이프라인 구축을 고민하게 된 계기

요즘 RN으로 개인 앱을 만들고 있다. 매일 틈틈히 개발 중인데, 문득 이런 생각이 들었다. 내가 푸시한 코드에 문제가 있으면 어떡하지?

지금까지는 로컬에서 npm start를 돌려서 iOS 시뮬레이터로 확인하고, 아 잘되네? 하고 소스를 푸시했다. 근데 이게 소스가 확장될수록 불안하기 시작했다.

React Native에서 중요한 패키지 버전이 맞는지도 확인 안하고 그냥 푸시하는 거니까.

그래서 이번 기회에 CI/CD 파이프라인을 구축해보기로 했다.

현재 나는, 정식으로 APP 등록을 하지 않은 상태이고, 로컬에서 개발을 진행중이기에 CD는 추후에 구축해보기로 하고 CI 먼저 구축해보자.

CI/CD 란?

간단하게 말하면 !

  • CI(Continuous Integration) : 코드를 푸시할 때마다 자동으로 테스트하고 검증
  • CD(Continuous Deployment) : 검증을 통과하면 자동으로 배포까지 해주는 것

쉽게 비유하자면, 내가 숙제를 제출할 때마다 자동으로 검사해주는 선생님 같은 느낌이다.

덕분에 실수를 빨리 잡아낼 수 있고, 더 안심하고 개발할 수 있다.

1단계 : GitHub Actions 워크플로우 생성

파일 구조

프로젝트 루트에 이런 식으로 폴더와 파일을 만들어주면 된다.


your-expo-project/
├── .github/
│   └── workflows/
│       └── ci.yml
├── app/
├── assets/
├── package.json
└── app.json

  

워크플로우 설정

.github/workflows/ci.yml 파일을 만들고 아래와 같이 작성한다.

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
name: Expo CI

on:
  push:
    branches: [ ahi ]  # 메인 브랜치명에 맞게

jobs:
  test:
    runs-on: ubuntu-latest
    
    steps:
      - name: 코드 체크아웃
        uses: actions/checkout@v4
      
      - name: Node.js 설정
        uses: actions/setup-node@v4
        with:
          node-version: '20'
          cache: 'npm'
      
      - name: 의존성 설치
        run: npm install
      
      - name: Expo 프로젝트 검사
        run: npx expo-doctor

Git에 추가 및 푸시

1
2
3
4
5
6
7
8
# 워크플로우 파일 추가
git add .github/

# 커밋
git commit -m "Add GitHub Actions CI workflow"

# 푸시
git push origin ahi

첫 실행 결과

GitHub Repository에 Actions 탭에 가면 워크플로우 실행 결과를 볼 수 있다.

발견된 문제

첫 실행에서부터 에러가 떠버렸다…. (Expo 패키지 버전이 안맞다는 에러)


X Check that packages match versions required by installed Expo SDK

package             expected  found
expo                ~54.0.30  54.0.25
expo-font           ~14.0.10  14.0.9
expo-haptics        ~15.0.8   15.0.7
...

  

문제 해결

신기하네,, 내 컴퓨터에서는 아무 문제 없이 잘 돌아갔었는데,, CI를 돌려보니 패키지 버전이 맞지 않다는 걸 발견할 수 있었다. (이래서 CI가 필요한가 보다…)

해결 방법은 간단했다.

1
2
3
4
5
6
7
# Expo 패키지 버전 자동 수정
npx expo install --fix

# 변경사항 커밋 및 푸시
git add package.json package-lock.json
git commit -m "chore: Fix Expo package versions to match SDK 54"
git push origin ahi

Expo 패키지 버전을 수정 후, 다시 실행해보니 모든 체크를 통과했다.

CI가 제공하는 가치

CI 도입전

  • 로컬에서만 테스트
  • 패키지 버전 불일치 모름
  • 배포 시점에 문제 발견

CI 도입후

  • 푸시할 때마다 자동 검증
  • 즉시 문제 발견 및 수정
  • 안정적인 코드베이스 유지

마치며

자주 커밋하는 내 입장에서 CI/CD를 더하니 작은 실수도 바로바로 잡아낼 수 있고, 오류에 대한 두려움이 조금은 줄었다.

무엇보다 좋은 것은, Expo와 GitHub Actions의 무료 티어만으로도 충분히 실용적인 CI/CD를 구축할 수 있다는 것이다.

돈 한 푼 안들고 이런걸 할 수 있다니,, 더 분발해야겠다,,

추후에 앱 스토어와 구글 스토어에 등록을 하게 되면, CD도 구축해보자.

This post is licensed under CC BY 4.0 by the author.