Potato
์•ˆ๋…•ํ•˜์„ธ์š”, ๊ฐ์žก๋‹ˆ๋‹ค?๐Ÿฅ” ^___^ ๐Ÿ˜บ github ๋ฐ”๋กœ๊ฐ€๊ธฐ ๐Ÿ‘‰๐Ÿป

Git

[CI] SwiftLint Github Action ์ ์šฉ๊ธฐ

๊ฐ์ž ๐Ÿฅ” 2023. 1. 26. 13:24
๋ฐ˜์‘ํ˜•

 

ํ•˜์ด! ์˜ค๋Š˜์€ ๋‚ด๊ฐ€ ์˜ˆ์ „๋ถ€ํ„ฐ ์ง„์งœ์ง„์งœ ์‚ฌ์šฉํ•ด๋ณด๊ณ ์‹ถ์—ˆ๋˜ Github action ์ ์šฉ๊ธฐ์— ๋Œ€ํ•ด์„œ ์ž‘์„ฑํ•ด๋ณผ๊ฒƒ์ด๋‹ค.
์• ํ”Œ ๋””๋ฒจ๋กœํผ ์•„์นด๋ฐ๋ฏธ์—์„œ ๋งˆ์ง€๋ง‰ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•  ๋•Œ ๊ฐ“.๋“€.๋‚˜ ๊ฐ€ github action์— lint์™€ ๋นŒ๋”๋ฅผ ์ ์šฉํ•ด์ค˜์„œ, pr์„ ๋‚ ๋ฆด๋•Œ๋งˆ๋‹ค ์•„์ฃผ ๊ฐ„ํŽธํ•˜๊ฒŒ! ๋‚˜์˜ ์ฝ”๋“œ๋“ค์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. (๋นŒ๋“œํ…Œ์ŠคํŠธ์™€ ๋ฆฐํŠธ๊ฐ€ ์ž˜ ์ ์šฉ๋๋Š”์ง€!)

์šฐ์„ , Lint๋ฅผ ์•ก์…˜์— ์ ์šฉํ•˜๊ฒŒ ๋˜๋ฉด, PR์„ ๋‚ ๋ฆด๋Œ€๋งˆ๋‹ค ๋‚˜์˜ ์ฝ”๋“œ์—์„œ Swift Lint ๊ทœ์น™์ด ์ž˜ ์ ์šฉ๋˜์–ด์žˆ๋Š”์ง€ ๊นƒํ—ˆ๋ธŒ ์•ก์…˜์—์„œ ํ™•์ธํ•ด์ค€๋‹ค!

PR์„ ๋‚ ๋ฆฌ๋ฉด, ์š”๋กœ์ฝ”๋กฌ ๋Œ“๊ธ€๋กœ ๋ฆฐํŠธ Success!!! ๋ผ๊ณ  ์•Œ๋ ค์ค€๋‹ค. ๋งŒ์•ฝ, ๋ฆฐํŠธ์— ์–ด๊ธ‹๋‚˜๋Š” ์‚ฌํ•ญ์ด ์žˆ์œผ๋ฉด, ๋Œ“๊ธ€๋„ ๋‹ฌ๋ฆฌ์ง€ ์•Š๊ณ , ๋ฐ‘์— ๋Œ€์™•๋งŒํ•œ โŒํ‘œ์‹œ๊ฐ€ ๋œจ๊ฒŒ ๋œ๋‹ค. 

๐ŸŸฃ ์ ์šฉํ•˜๊ณ  ์ข‹์•˜๋˜ ์ 

ํ”„๋กœ์ ํŠธ ๋‚ด๋ถ€์— ์“ธ๋ฐ์—†๋Š” warning์„ ๋ณด์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

๋ฆฐํŠธ๋ฅผ ์ ์šฉํ•ด๋ณธ์‚ฌ๋žŒ์ด๋ผ๋ฉด ์•Œ๊ฒƒ์ด๋‹ค. TODO, MARK ์ฃผ์„์—๋„ ์ „๋ถ€ warning์ด ๋œจ๊ณ , ์‚ฌ์‚ฌ๊ฑด๊ฑด ์ „๋ถ€๋‹ค!!!!! warning์œผ๋กœ ๋ฆฐํŠธ๊ฒฝ๊ณ ๋ฅผ ์ค€๋‹ค. ํ”„๋กœ์ ํŠธ๊ฐ€ ์ปค์ง€๋ฉด ์ปค์งˆ์ˆ˜๋ก, criticalํ•œ ์—๋Ÿฌ๋„ ์•„๋‹Œ๋ฐ ๋ฌด์ˆ˜ํžˆ ๋งŽ์€ ๊ฒฝ๊ณ ๋“ค์„ ๋งŒ๋‚˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด์„œ ๊ฒฐ๊ตญ criticalํ•œ ์—๋Ÿฌ๊ฐ€ ๋ฌปํžˆ๊ฒŒ ๋˜๊ฒ ์ง€..?

lint๋ฅผ github action์—์„œ ํ™•์ธํ•˜๊ฒŒ ํ•จ์œผ๋กœ์จ, ์ด๋Ÿฐ ๋ถˆํŽธํ•จ์„ ์ค„์ผ ์ˆ˜ ์žˆ์—ˆ๋‹ค. criticalํ•œ ๋ฆฐํŠธ์—๋Ÿฌ ์ผ ๊ฒฝ์šฐ, ์ง์ ‘ pr์—์„œ merge๋ฅผ ๋ง‰์•„์ฃผ๊ธฐ ๋•Œ๋ฌธ์— criticalํ•œ ์—๋Ÿฌ ๋ง๊ณ  ์ž์ž˜ํ•œ warning๋“ค์€ ๊ทธ๋ƒฅ ๋„˜๊ธธ ์ˆ˜ ์žˆ๋‹ค. 

ํŽธํ•˜๋‹ค.

ํ”„๋กœ์ ํŠธ๋ฅผ ์ปค๋ฐ‹ํ•˜๊ธฐ ์ „, ํ•ญ์ƒ lint๋ฅผ ์ง€์ผฐ๋‚˜ ํ™•์ธํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ–ˆ๋‹ค. ์™œ๋ƒ๋ฉด.. warning์ด ๊ธฐ๋ณธ 10๊ฐœ ์ด์ƒ ๋œจ๊ธฐ ๋•Œ๋ฌธ์—!! ๋ฌผ๋ก  ์ด๋ ‡๊ฒŒ ํ•˜๋‚˜ํ•˜๋‚˜ ์ „๋ถ€ ๊ฒ€ํ† ํ•˜๋Š”๊ฒŒ ์ข‹์€ ์Šต๊ด€์ด๊ธด ํ•˜์ง€๋งŒ, ์ด ๋ชจ๋“  ๊ฒ€์‚ฌ๋“ค์„ ์ž๋™์œผ๋กœ ์ง„ํ–‰ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์ •๋ง ํŽธํ–ˆ๋‹ค. ์ ์ฐจ,, CI์— ๊ด€์‹ฌ์ด ๊ฐ€๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. . ๋‘๊ทผ๋‘๊ทผ


๐ŸŸฃ ์‹œ์ž‘ํ•˜๋ฉฐ

์•ผ์‹ฌ์ฐจ๊ฒŒ '๋™์‹์ด(๊ฐœ์ธ ํ”„๋กœ์ ํŠธ)' ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์ง€๊ธˆ์€ ์‹œ์ž‘ํ•˜๊ธฐ ์ „, ํ”„๋กœ์ ํŠธ setting ๋‹จ๊ณ„..! ์ด์ „์— ๋ฉด์ ‘์—์„œ ๊ฐœ๋ฐœ๋ฌธํ™”์™€ ๊ด€๋ จํ•œ ์งˆ๋ฌธ์ด ๋“ค์–ด์™”์„๋•Œ, Lint์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ๋‚˜๋ˆˆ ์ ์ด ์žˆ๋Š”๋ฐ Human์ด ์ง€ํ‚ค๋ ค๊ณ  ๋…ธ๋ ฅํ•œ ๊ฒƒ์ด๋ƒ, CI๋ฅผ ์ ์šฉํ•ด์„œ ์‚ฌ์šฉํ•ด๋ณธ๊ฒƒ์ด๋ƒ๋ผ๋Š” ์งˆ๋ฌธ์„ ๋ฐ›์€ ์ ์ด ์žˆ์—ˆ๋‹ค.

๊ทธ์ € ๋‚˜๋Š”, Human error๋ฅผ ์ง์ ‘ ์ˆ˜์ •ํ•˜๋Š” ๋ฐฉ์•ˆ์œผ๋กœ ์‚ฌ์šฉํ–ˆ๋‹ค๊ณ  ๋Œ€๋‹ตํ–ˆ๊ณ , ๊ทธ ์ดํ›„ EarthValley80ํ”„๋กœ์ ํŠธ์—์„œ ๋“€๋‚˜๊ฐ€ ์„ค์ •ํ•ด์ค€ lint Action์„ ๋ณด๊ณ  ๊ผญ ์ง์ ‘ ํ•ด๋ณด๊ณ ์‹ถ์€ ๋งˆ์Œ์ด ๋“ค์—ˆ์—ˆ๋‹ค.

๋“€๋‚˜๊ฐ€ ์ž˜ ์ •๋ฆฌํ•ด์ค€ ๊ธ€, ๊ทธ๋ฆฌ๊ณ  ์ธํ„ฐ๋„ท์˜ ๊ธ€์„ ๋ณด๊ณ  ๋‚˜์˜ ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•ด๋ณด์ž!

๐ŸŸฃ SwiftLint๋ฅผ Action์— ์ ์šฉํ•˜๊ธฐ

  • ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•˜๋‹ค๋ณด๋ฉด, ๋„ˆ๋ฌด ๋งŽ์€ Warning ๋“ค์ด ๋œฌ๋‹ค. TODO , MARK ๋ฅผ ๋‹ฌ์•„๋†“์€ ๊ฒƒ๋“ค์—๋„ ๋‹ค Warning์ด ๋œจ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค!!! ์ •์ž‘ ์ •๋ง criticalํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ž˜ ์ธ์‹์ด ์•ˆ๋œ๋‹ค๋Š” ๋ฌธ์ œ์ ์ด ์žˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ๋‚ด๋ถ€์—๋‹ค๊ฐ€ lint๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์ง€๋งŒ, ์ด๋ฏธ ๋งˆ์ผ“ ํ”Œ๋ ˆ์ด์Šค์— ๋‚˜์™€์žˆ๋Š” SwiftLint๊ฐ€ ์กด์žฌํ•œ๋‹ค. ํ•ด๋‹น ๋งํฌ๋Š” SwitLint๋ฅผ Github Action์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋‚˜์™€์žˆ๋‹ค.

https://github.com/norio-nomura/action-swiftlint

 

GitHub - norio-nomura/action-swiftlint: GitHub Action for SwiftLint

GitHub Action for SwiftLint. Contribute to norio-nomura/action-swiftlint development by creating an account on GitHub.

github.com

๋ฆฌ๋“œ๋ฏธ์— ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์ด ์ž˜ ๋‚˜์™€์žˆ๋‹ค.

1๏ธโƒฃ swiftlint.yml ํŒŒ์ผ ์ƒ์„ฑ

ํ•ด๋‹น ํŒŒ์ผ์„ ์ด ์œ„ ๊ฒฝ๋กœ์— ์ƒ์„ฑํ•ด์ฃผ์ž. ๋‚ด๋ถ€๋Š” ์•„๋ž˜์ฒ˜๋Ÿผ ์ƒ๊ฒผ๋‹ค.

name: auto PR swiftLint

on:
  pull_request:
    branches: [ develop ]
    paths:
      - '.github/workflows/swiftlint.yml'
      - '.swiftlint.yml'
      - '**/*.swift'

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v1
    - name: GitHub Action for SwiftLint
      uses: norio-nomura/action-swiftlint@master
      env:
        DIFF_BASE: ${{ github.base_ref }}

    - name: Add PR Comment
      if: ${{ success() }}
      uses: mshick/add-pr-comment@v1
      with:
        message: |
         ## All File Checked โœ…
         | โœ… 	| Auto Pull Request SwiftLint Success!!!! 	|
         |---	|----------------------------------------------	|
        repo-token: ${{ secrets.ACCESS_TOKEN }}
        repo-token-user-login: 'github-actions[bot]' # The user.login for temporary GitHub tokens
        allow-repeats: false # This is the default

 

2๏ธโƒฃ ACCESS_TOKEN ์„ค์ •

repo-token: ${{ secrets.ACCESS_TOKEN }}

์ด ๋ถ€๋ถ„์— ๋‚ด repo์˜ access token์„ ๋„ฃ์–ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ž˜์•ผ PR์„ ์˜ฌ๋ ธ์„๋•Œ, ์ ‘๊ทผ ๊ถŒํ•œ์„ ์–ป์–ด์„œ ๋Œ“๊ธ€์„ ์ž๋™์œผ๋กœ ๋‹ฌ์•„์ค„ ์ˆ˜ ์žˆ๋‹ค.

ACCESS_TOKEN์„ ๋ฐœ๊ธ‰๋ฐ›๋Š” ๊ฒฝ๋กœ๋Š” Github ๋‚ด๋ถ€ Setting์—์„œ ๊ฐ€๋Šฅํ•˜๋‹ค.

๐Ÿ’๐Ÿป ๊ฒฝ๋กœ!!
Settings** > **Secrets and Variables** > **Actions** -> New repository secret

title๋ฅผ ACCESS_TOKEN์œผ๋กœ ์„ค์ •ํ•ด์ฃผ์—ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๊ฒŒ ๋˜๋ฉด,

secrets.ACCESS_TOKEN

์œผ๋กœ ํ† ํฐ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

Secret์•ˆ์— ์žˆ๋Š” ๊ฐ’์€, ๋‚˜์˜ Github AccessToken ๊ฐ’์„ ๋„ฃ์–ด์ค„ ๊ฒƒ์ด๋‹ค. ๋ฐœ๊ธ‰๋ฐ›๋Š” ๋ฐฉ๋ฒ•์€

 

1. ์ด๋ฏธ์ง€ ์˜† ์‚ฌ์ง„ ํด๋ฆญ ํ›„ Settings ํด๋ฆญ
2.์™ผ์ชฝ ๋ฉ”๋‰ด ๋งจ ๋ฐ‘, Developer Settings ํด๋ฆญ

3. Personal access tokens → Token (Clasic) → Generate New token ํด๋ฆญ
4. ์˜ต์…˜์€,, classic์œผ๋กœ … ๊ทธ๋ƒฅ..

 

5. ํ† ํฐ๋„ ์ž์ฃผ ๋ฐ”๊ฟ”์ค˜์•ผ ์ข‹์ง€๋งŒ ๋‚˜๋Š” ๊ท€์ฐฎ์œผ๋‹ˆ๊นŒ ์ผ๋‹จ ๊ธฐ๊ฐ„ ๋งŒ๋ฃŒ ์—†์ด ํ† ํฐ์„ ์ƒ์„ฑํ–ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ† ํฐ์€ ๋”ฑ ํ•œ ๋ฒˆ ๋งŒ ๋ณด์—ฌ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ํ† ํฐ์„ ๋”ฐ๋กœ ๋ฉ”๋ชจ์žฅ์— ์ •๋ฆฌํ•ด๋‘๋Š” ๊ฒƒ์ด์ข‹๋‹ค๊ณ  ํ•œ๋‹ค. .(์ด์ „์— ์•ˆํ•ด๋†จ๋Š”๋ฐ ์ง€๊ธˆ๋ถ€ํ„ฐ๋ผ๋„ ํ•ด๋†”์•ผ์ง€,,,) ์˜ต์…˜์€ repo๋งŒ ํด๋ฆญํ–ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ์ด์ œ ์ƒ์„ฑ๋œ ํ† ํฐ์„ Secrets์— ๋„ฃ์–ด์ฃผ์ž.

์ด ๋ถ€๋ถ„๊นŒ์ง€ ์„ค์ •ํ•˜๋ฉด, PR๋ฅผ ๋‚ ๋ฆด ๋•Œ๋งˆ๋‹ค github-action[bot]์ด ๋ ˆํฌ์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ๋ฐ›์•„์„œ Swiftlint์— ๋Œ€ํ•œ ๊ฒ€์‚ฌ๋ฅผ ์ง„ํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค.

3๏ธโƒฃ ๋‘๊ทผ๋‘๊ทผ ์ด์ œ PR์„ ๋‚ ๋ ค๋ณด์ž.

์ง€๊ธˆ๊นŒ์ง€ ์ƒ์„ฑ๋œ ๋ชจ๋“  ๊ฒƒ๋“ค์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ผ๋‹จ PR์„ ๋‚ ๋ฆฌ๊ณ , ํ•ด๋‹น PR์— ๋ฆฐํŠธ๋ด‡์ด ๋Œ“๊ธ€์„ ๋‹ฌ๋ฉด, ๋ฌด์‚ฌํžˆ ์™„๋ฃŒ๊ฐ€ ๋œ ๊ฒƒ์ด๋‹ค. ๋‘๊ทผ……ํ•˜.. action์ด ๋Œ์•„๊ฐ€๋ ค๊ณ  ๋“œ๋ฆ‰๋“œ๋ฆ‰ ํ•œ๋‹ค. ๐Ÿšจ๐Ÿฅถ

 

์˜ค ์˜ค์˜ค ์˜ค์˜ค์˜ค์˜ค์˜น ๋๋”ฐ!!!

 

์˜ค์˜ˆ~ ์ƒ๊ฐ๋ณด๋‹ค ๊ฐ„๋‹จํ–ˆ๋‹ค. ์ด์ œ, lint๋ฅผ action์— ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์•Œ์•˜์œผ๋‹ˆ!! builder๋ฅผ ์ ์šฉํ•ด๋ณด์ž. ํ—ˆํ—ˆํ—ˆ 

 

๐Ÿ“š ์ฐธ๊ณ  ๋ ˆํผ๋Ÿฐ์Šค - ๊ฐ“๋“€์˜ ๊ณต์œ ์ž๋ฃŒ

https://github.com/DeveloperAcademy-POSTECH/MacC-Team-EarthValley80/discussions/5

 

[ARCHIVE] Github Action ๋‹จ๋‹จํžˆ ์•Œ์•„๊ฐ€๊ธฐ · Discussion #5 · DeveloperAcademy-POSTECH/MacC-Team-EarthValley80

๋“ค์–ด๊ฐ€๋ฉฐ ์˜ค๋Š˜์€ ์•Œ์•„๋‘๋ฉด ๋ผˆ๊ฐ€ ๋˜๊ณ , ์‚ด์ด ๋˜๋Š” Github Action์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. Github Action์„ ์‚ฌ์šฉํ•ด ๋ณธ ์ง€ ๋ฒŒ์จ 1๋…„์งธ์ง€๋งŒ ์•„์ง๊นŒ์ง€๋„ ์ž˜ ๋ชจ๋ฅด๊ฒ ์–ด์š”. ์ตœ๊ทผ์—๋„ Actions๋ฅผ ์„ค์ •ํ•˜๋ฉด์„œ 22

github.com

 

๋ฐ˜์‘ํ˜•