[๊นํ๋ธ] Codecov ์ ์ฉํ์ฌ PR์ ํ ์คํธ ์ปค๋ฒ๋ฆฌ ๋ฑ์ง ๋ฌ๊ธฐ
https://app.codecov.io/
codecov์ ๋ก๊ทธ์ธํด์ ๊นํ๋ธ์ ์ฐ๋ํ๋ฉด
๋ค์๊ณผ ๊ฐ์ด ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ์ ํํ ์ ์๋ค.
(๋๋ ํผ๋ธ๋ฆญ ๋ ํฌ์งํ ๋ฆฌ๋ก ์งํํ์ฌ ํ๋ผ์ด๋น ๋ ํฌ์งํ ๋ฆฌ์ ๊ฒฝ์ฐ์๋ ๋ฐฉ์์ด ๋ค๋ฅผ ์ ์๋ค.)
์ํ๋ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ์ ํํ๊ณ
๋๋ GitHub Actions๋ฅผ ์ด์ฉํด CI/CD ํ์ดํ๋ผ์ธ์ ๊ตฌ์ถํ๊ธฐ ๋๋ฌธ์
์
์
์ต์
์ GitHub Options๋ฅผ ์ ํํ๋ค.
์๋ง codecov๋ฅผ ์ ์ฉํ๋ ค๋ ์ฌ๋์
์คํ๋ง์์ jacoco๋ฅผ ์ด๋ฏธ ์ ์ฉํ์ ๊ฒ์ด๋ค.
๊ทธ๋ฐ ๊ฒฝ์ฐ ๋ค์ ๊ณผ์ ์ ์๋ตํ๋ค.
ํ ํฐ์ ๋ฐ๊ธ๋ฐ์ codecov์ ๋ด ๋ ํฌ๋ฅผ ์ฐ๊ฒฐํ๋ค.
๊นํ๋ธ ๋ ํฌ์ Setting > Security > Secrets and variables > Actions์์
๋๊ฐ์ด ์ถ๊ฐํ๋ฉด ๋๋ค.
๋๋ฌด๋๋ ์น์ ํ๊ฒ
workflow ํ์ผ์ ์ด๋ป๊ฒ ์ ์ด์ผํ ์ง ๊ทธ๋๋ก ์๋ ค์ค๋ค.
.github/workflows/test.yml์ ๋ค์๊ณผ ๊ฐ์ด
์์ฑํ์ฌ ๋ฉ์ธ ๋ธ๋์น์ PR์ด ์์ฑ๋ ๋๋ง๋ค
ํ
์คํธ๊ฐ ์คํ๋๊ณ ํ
์คํธ ์ปค๋ฒ๋ฆฌ์ง๋ฅผ ํ์ธํ๋๋ก ์ค์ ํ์๋ค.
name: CI workflow
on:
pull_request:
branches:
- main
jobs:
# job์ ์๋ณํ๊ธฐ ์ํ id
My-Test-Job:
runs-on: ubuntu-latest
steps:
- name: Run tests
run: | # ์ฌ๋ฌ ๋ช
๋ น์ด ๋ฌธ์ฅ ์์ฑ ๊ฐ๋ฅ
./gradlew test
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
์ด๋ฐ ์ค์ ์ ๋ ํฌ์งํ ๋ฆฌ์ Action ํญ์์ ์ถ๊ฐํ๋ค.
'Java with Gradle'๋ก ํ๋ค.
๋ค๋ฅธ ๋ธ๋์น์์ ๋ฉ์ธ์ผ๋ก PR์ ์์ฑํ์๋ค.
์บก์ณ๋ฅผ ๋์ณค์ง๋ง ๊ทธ๋ผ ํด๋น ์ก์ ์ด ๋น๊ธ๋น๊ธ ๋์๊ฐ๋ฉฐ ์งํ๋๋ค.
๋๋๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
'Upload coverage reports to Codecov' ์์
์ ๋ณด๋ฉด
๋ฌด์์ด ๋ง์ด ์งํ๋ ๊ฒ ๊ฐ์๋ฐ ๊ฐ๋
์ฑ์ด ์ข์ง ์๋ค.
์ด๋๋ codecov ์ฑ์ ์ด์ฉํ๋ฉด ๋๋ค.
์ด๊ธฐ ํ๋ฉด์์ ์ฑ์ ์ค์นํ ์ ์๋ค.
๋๋ ์ํ๋ ๋ ํฌ์งํ ๋ฆฌ์๋ง ์ค์นํ๋ค.
๋ค์ ์ก์
์ผ๋ก ๋์์ค๋ฉด
์์
ํ๋จ์ ๋งํฌ๊ฐ ์๋ค.
ํด๋ฆญํ๋ฉด ๋ด ์ปค๋ฒ๋ฆฌ์ง๋ฅผ ํ์ธํ ์ ์๋ค.
ํ์ฌ ๋ด ์ปค๋ฒ๋ฆฌ์ง๋ 50.55ํผ์ผํธ์ด๋ค.
codecov ์ฑ์ ์ด์ฉํ๋ฉด
PR์ ์ธก์ ๊ฒฐ๊ณผ๋ฅผ ๋๊ธ๋ก ์๋ ค์ค๋ค๊ณ ํ๋ค.
์ ๊ทผ๋ฐ ๋ ์ด๊ฒ ์ฒซ PR์ด๋ผ ๊ทธ๋ฐ์ง ์ ์๋ ค์ค๋ค.
์ด์ ๋ฑ์ง๋ฅผ ๋ฌ์์ฃผ์.
codecov ์ฌ์ดํธ์์ ํด๋น ๋ ํฌ์งํ ๋ฆฌ์ Configure > Badges & Graphs๋ฅผ ํ์ธํ๋ค.
์ฌ๊ธฐ์ ๋งํฌ๋ค์ด์ ๋ณต์ฌํ์ฌ ๋ฆฌ๋๋ฏธ์ ๋ถ์ฌ๋์ผ๋ฉด ๋๋ค.
์ง์~
์ถ๊ฐ๋ก ๋ฌ ์ ์๋ ๋ฑ์ง๊ฐ ํ๋ ๋ ์๋ค.
ํด๋น ์ํฌํ๋ก์ฐ์ ์ฐ์ธก์์ ...์ ํด๋ฆญํ๋ฉด
'Create status badge'๋ฅผ ์ฐพ์ ์ ์๋ค.
ํด๋ฆญํ๋ฉด ์ด๋ฌํ ํ๋ฉด์ด ๋จ๋๋ฐ
์๋ ๋ฆฌ๋๋ฏธ์ ๋ถ์ฌ๋์ผ๋ฉด
์ด๋ ๊ฒ CI ์ํฌํ๋ก์ฐ์ ๋ํด ํ ์คํธ ํต๊ณผ์ ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง ๋ฑ์ง๋ฅผ ํ์ํ ์ ์๋ค~!
์ฐธ๊ณ ์๋ฃ