Skip to content

Commit e7151df

Browse files
authored
Update CI.yml
1 parent 85d27aa commit e7151df

1 file changed

Lines changed: 31 additions & 17 deletions

File tree

.github/workflows/CI.yml

Lines changed: 31 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,40 +2,54 @@ name: Spring Boot CI with gradle
22

33
on:
44
push:
5-
branches: [ "main", "develop", "feat/**", "feature/**" ]
5+
branches: [ "main", "develop", "feat/**", "feature/**" ] # 이 브랜치들에서 푸시될 때만
6+
paths: # 아래 파일/경로가 변경된 커밋일 때만 실행
7+
- "build.gradle*"
8+
- "settings.gradle*"
9+
- "gradlew"
10+
- "gradle/**"
11+
- "src/**"
12+
- ".github/workflows/**" # CI 파일이 바뀌어도 실행
613
pull_request:
7-
branches: [ "main", "develop" ]
8-
workflow_dispatch:
14+
branches: [ "main", "develop" ] # 대상(base)이 main/develop인 PR에 대해
15+
paths: # PR 변경에 Gradle/소스가 포함되어 있을 때만 실행
16+
- "build.gradle*"
17+
- "settings.gradle*"
18+
- "gradlew"
19+
- "gradle/**"
20+
- "src/**"
21+
- ".github/workflows/**"
22+
workflow_dispatch: # Actions 탭에서 수동 실행 버튼 제공
923

10-
# 최소 권한
24+
# 최소 권한(리포 콘텐츠 읽기만 허용)
1125
permissions:
1226
contents: read
1327

14-
# 같은 브랜치 중복 실행 시 이전 실행 취소
28+
# 같은 브랜치에서 실행이 겹치면 이전 실행을 취소하여 큐 정리/빌드 낭비 방지
1529
concurrency:
1630
group: ${{ github.workflow }}-${{ github.ref }}
1731
cancel-in-progress: true
1832

1933
jobs:
2034
build-test:
21-
# 레포에 Gradle 빌드 파일이 없으면 아예 실행 안 함(불필요한 실패 방지)
22-
if: ${{ hashFiles('**/build.gradle*', '**/settings.gradle*') != '' }}
23-
runs-on: ubuntu-latest
24-
timeout-minutes: 20
35+
runs-on: ubuntu-latest # GitHub 호스티드 우분투 최신 러너
36+
timeout-minutes: 20 # 무한 대기 방지(20분 초과 시 실패 처리)
2537

2638
steps:
27-
# 1) 코드 체크아웃
39+
# 1) 현재 커밋을 러너로 체크아웃
2840
- name: Checkout
2941
uses: actions/checkout@v4
3042

31-
# 2) JDK 17 설치(Temurin)
43+
# 2) JDK 17 설치(Temurin 배포판)
3244
- name: Set up JDK 17
3345
uses: actions/setup-java@v4
3446
with:
3547
distribution: temurin
3648
java-version: 17
3749

38-
# 3) Secret로 application.yml 생성(멀티라인 안전)
50+
# 3) GitHub Secret으로 application.yml 생성
51+
# - 레포에 민감정보를 커밋하지 않고 CI에서만 주입
52+
# - heredoc으로 멀티라인 안전 처리 + CRLF 정리
3953
- name: Make application.yml from secret
4054
shell: bash
4155
run: |
@@ -45,15 +59,15 @@ jobs:
4559
EOF
4660
sed -i 's/\r$//' ./src/main/resources/application.yml
4761
48-
# 4) Gradle 액션으로 빌드/테스트
49-
# - 레포의 Gradle Wrapper를 자동 감지하여 실행
50-
# - 캐시(래퍼/디스트리뷰션/의존성) 자동 관리
62+
# 4) Gradle 래퍼로 빌드 & 테스트
63+
# - gradle/gradle-build-action이 래퍼/디스트리뷰션/의존성 캐시를 자동 관리
5164
- name: Build with Gradle
5265
uses: gradle/gradle-build-action@v3
5366
with:
5467
arguments: clean build --no-daemon
5568

56-
# 5) 테스트 리포트 업로드(항상)
69+
# 5) 테스트 리포트 업로드(항상 수행)
70+
# - 빌드 실패해도 HTML/XML 리포트를 Actions > Artifacts에서 확인 가능
5771
- name: Upload Test Reports
5872
if: always()
5973
uses: actions/upload-artifact@v4
@@ -63,7 +77,7 @@ jobs:
6377
**/build/test-results/test
6478
**/build/reports/tests/test
6579
66-
# 6) 실패 시 간단 요약 출력
80+
# 6) 실패 시 콘솔에 간단 요약 출력(어떤 테스트가 실패했는지 빠르게 확인)
6781
- name: Print failed tests (if any)
6882
if: failure()
6983
shell: bash

0 commit comments

Comments
 (0)