1+ name : Backend PR CI
2+
3+ env :
4+ BACKEND_DIR : back
5+
6+ on :
7+ pull_request :
8+ branches :
9+ # 개발 초기 - main으로의 PR 시 검사
10+ # 향후 dev로의 PR / dev -> main PR 시에도 검사
11+ - main
12+ - dev
13+ types : [
14+ # PR 생성 및 다시 오픈 시
15+ opened, reopened,
16+ # 최초 PR 제출 이후 작업 브랜치 push 발생 시
17+ synchronize,
18+ # pr 제목, 내용 수정 등 일체의 수정이 발생했을 때 트리거 되는데요.
19+ # 타켓 브랜치를 잘못 설정했을 때의 상황을 상정하여 설정입니다.
20+ edited
21+ ]
22+ paths :
23+ [
24+ " .github/workflows/**" ,
25+ " back/build.gradle.kts" ,
26+ " back/settings.gradle.kts" ,
27+ " back/src/**" ,
28+ " back/Dockerfile" ,
29+ ]
30+
31+ # 동일 브랜치에서 연속 실행 방지
32+ concurrency :
33+ group : ${{ github.workflow}}-${{ github.ref }}-${{ github.event_name }}
34+ cancel-in-progress : true
35+
36+ permissions :
37+ contents : read
38+ # mikepenz/action-junit-report 구동을 위한 최소 조건
39+ checks : write
40+
41+ jobs :
42+ backend-ci :
43+ # 상단의 types 주석을 참고
44+ if : github.event.action != 'edited' || github.event.changes.base.ref
45+ name : Backend CI
46+ runs-on : ubuntu-latest
47+ defaults :
48+ run :
49+ working-directory : ./${{ env.BACKEND_DIR }}
50+ steps :
51+ # 소스 코드 가져오기
52+ - name : Checkout repository
53+ uses : actions/checkout@v4
54+
55+ # JDK 설정
56+ # graalvm 21 사용
57+ - name : Set up JDK 21
58+ uses : actions/setup-java@v5
59+ with :
60+ distribution : " graalvm"
61+ java-version : " 21"
62+ cache : " gradle"
63+
64+ # Gradle 캐싱
65+ - name : Set up Gradle
66+ uses : gradle/actions/setup-gradle@v4
67+
68+ # Gradle 실행 권한 부여
69+ - name : Grant execute permission for gradlew
70+ run : chmod +x gradlew
71+
72+ # Secret으로 부터 .env 생성
73+ - name : Generate .env
74+ run : |
75+ printf "%s" "${{ secrets.DOT_ENV }}" > .env
76+
77+ # Gradle 빌드 및 테스트 진행
78+ - name : Execute Build and Tests
79+ run : ./gradlew clean build test --no-daemon --warning-mode=all
80+
81+ # 테스트 실행 결과 로깅 Action
82+ - name : Generate JUnit Test Report
83+ uses : mikepenz/action-junit-report@v5
84+ if : success() || failure() # 성공 여부 상관없이 실행
85+ with :
86+ report_paths : " **/build/test-results/test/TEST-*.xml"
0 commit comments