@@ -2,32 +2,31 @@ name: CI
22
33on :
44 push :
5- branches : [main]
5+ branches : [main, develop ]
66 pull_request :
77 branches : [main, develop]
88 types : [opened, synchronize, reopened, ready_for_review]
99
1010permissions :
1111 pull-requests : write
1212 contents : read
13+ checks : write
14+
1315jobs :
1416 build :
1517 runs-on : ubuntu-latest
1618
1719 steps :
1820 - name : 소스코드 체크아웃
19- uses : actions/checkout@v3
21+ uses : actions/checkout@v4
2022
2123 - name : Node.js 설정
22- uses : actions/setup-node@v3
24+ uses : actions/setup-node@v4
2325 with :
24- node-version : " 18"
25-
26- - name : npm 최신 버전 설치 (선택 사항)
27- run : npm install -g npm@8
26+ node-version : " 20"
2827
2928 - name : npm 캐시 설정
30- uses : actions/cache@v3
29+ uses : actions/cache@v4
3130 with :
3231 path : ~/.npm
3332 key : ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
@@ -43,23 +42,52 @@ jobs:
4342 - name : 빌드
4443 run : npm run build
4544
45+ test :
46+ runs-on : ubuntu-latest
47+
48+ steps :
49+ - name : 소스코드 체크아웃
50+ uses : actions/checkout@v4
51+
52+ - name : Node.js 설정
53+ uses : actions/setup-node@v4
54+ with :
55+ node-version : " 20"
56+
57+ - name : npm 캐시 설정
58+ uses : actions/cache@v4
59+ with :
60+ path : ~/.npm
61+ key : ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
62+ restore-keys : |
63+ ${{ runner.os }}-node-
64+
65+ - name : 의존성 설치
66+ run : npm install --frozen-lockfile
67+
68+ - name : 테스트 및 커버리지 생성
69+ run : npm run test:coverage
70+
71+ - name : 커버리지 리포트 PR 코멘트
72+ uses : davelosert/vitest-coverage-report-action@v2
73+ if : github.event_name == 'pull_request'
74+
4675 pr-checks :
47- needs : build
76+ needs : [ build]
4877 runs-on : ubuntu-latest
78+ if : always() && github.event_name == 'pull_request'
4979 steps :
5080 - name : PR CI 결과 코멘트
51- if : always()
52- uses : actions/github-script@v6
81+ uses : actions/github-script@v7
5382 with :
5483 script : |
55- const pr = context.payload.pull_request;
56- const status = '${{ job.status }}';
57- const message = status === 'success'
58- ? '✅ CI 성공'
59- : '❌ CI 실패';
84+ const buildResult = '${{ needs.build.result }}';
85+ const message = buildResult === 'success'
86+ ? '✅ CI 성공 (빌드 & 린트 통과)'
87+ : `❌ CI 실패 (빌드: ${buildResult})`;
6088
6189 github.rest.issues.createComment({
62- issue_number: pr .number,
90+ issue_number: context.payload.pull_request .number,
6391 owner: context.repo.owner,
6492 repo: context.repo.repo,
6593 body: message
0 commit comments