개발지식 먹는 하마 님의 블로그
[내일배움캠프 65일차] Github CI 트러블 슈팅 본문
이번 협업에서는 Github의 CI 기능을 적용하였다.
❓ 문제 상황
별도의 DB를 사용하지 않는 하위 3개의 항목에 대해서는 Github Action 빌드가 성공한다.
그러나 그 이후의 빌드부터는 실패하게 된다.
🤷 문제 원인
우리가 로컬 환경에서 테스트할 때는 필요한 DB가 설치되어있고 환경변수도 설정되어있기 때문에
문제가 없지만, Github 환경은 다르다.
Github에는 기본적으로 DB 설치 및 환경변수가 설정되어있지 않기 때문에 위와 같은 오류가 발생하게 된다.
✅ 해결 방법
[ 가장 간단한 해결방법 ]
Test 코드를 삭제한다.
해당 오류는 테스트 코드를 실행하면서 발생하는 것이기 때문에 Test 코드를 삭제하면 빌드 성공 여부만 검사하게 된다.
그러나, 이 방법은 추천하지 않는다.
실제 현업에서 빌드 성공 여부를 확인을 목적으로 CI를 사용하는 것이 아니기 때문이다.
[ 진짜 해결방법 ]
Github Actions 전용 환경변수 설정을 위한 yml 파일을 .github 폴더 내에 만들어주면 된다.
Github Actions로 CI 구축하기 (with env.yml 관리)
CI 구축 목적? 저희 팀은 각 브랜치에서 develop 브랜치로 머지될 때, 자동으로 빌드&테스트를 수행하여 develop 브랜치는 바로 배포해도 문제가 없는 브랜치임을 보장하고자 CI 설정을 해줬습니다!
velog.io
name: Dev CI
on:
pull_request:
branches: [ "dev" ]
jobs:
build-and-test:
runs-on: ubuntu-latest
services:
redis:
image: redis:7.4.2-alpine
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 6379:6379
mysql:
image: mysql:8.0
env:
MYSQL_ROOT_PASSWORD:
MYSQL_DATABASE:
MYSQL_USER:
MYSQL_PASSWORD:
options: >-
--health-cmd="mysqladmin ping -h localhost"
--health-interval=10s
--health-timeout=5s
--health-retries=5
ports:
- 3306:3306
steps:
- name: Checkout Repository
uses: actions/checkout@v3
- name: Set up JDK
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
위와 같이 yml 파일을 생성하고 mysql 관련 설정을 추가해준 이후 요청한 PR에 대해 Github Actions가 성공하는 것을 볼 수 있다.
'내일배움캠프 (CS25)' 카테고리의 다른 글
[내일배움캠프 69일차] nullnull티켓 회고 (0) | 2025.05.28 |
---|---|
[내일배움캠프 68일차] 좌석 상태 관리 - 트러블 슈팅 (0) | 2025.05.27 |
[내일배움캠프 63일차] nullnullTicket 동시성 제어 분산락 구현 (0) | 2025.05.19 |
[내일배움캠프 62일차] 동시성 제어 티켓팅 프로젝트 설계 (0) | 2025.05.16 |
[내일배움캠프 61일차] Spring 심화 프로젝트 회고 (0) | 2025.05.15 |