โš™๏ธ ๊ธฐํƒ€ ๊ฐœ๋ฐœ ์ž๋ฃŒ

[๊นƒํ—ˆ๋ธŒ] Codecov ์ ์šฉํ•˜์—ฌ PR์— ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ ๋ฑƒ์ง€ ๋‹ฌ๊ธฐ

์†Œ์˜ ๐Ÿ€ 2025. 4. 25. 11:08
๋ฐ˜์‘ํ˜•
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 ์›Œํฌํ”Œ๋กœ์šฐ์— ๋Œ€ํ•ด ํ…Œ์ŠคํŠธ ํ†ต๊ณผ์™€ ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ ๋ฑƒ์ง€๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค~!

 

 

์ฐธ๊ณ ์ž๋ฃŒ

๋ฐ˜์‘ํ˜•