๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ณต๋ถ€๊ธฐ๋ก/๊นƒ & ๋ฆฌ๋ˆ…์Šค

[๊ฐ•์˜] ๊ฐœ๋ฐœ์ž์Šค๋Ÿฝ๊ฒŒ Github ์‚ฌ์šฉํ•˜๊ธฐ

by kaizen_bh 2025. 11. 13.

 

 

 

 

 

 

 

 

 

https://www.boostcourse.org/cs103

 

๊ฐœ๋ฐœ์ž์Šค๋Ÿฝ๊ฒŒ Github ์‚ฌ์šฉํ•˜๊ธฐ

๋ถ€์ŠคํŠธ์ฝ”์Šค ๋ฌด๋ฃŒ ๊ฐ•์˜

www.boostcourse.org

 

 

๋ถ€์ŠคํŠธ์บ ํ”„ ๋ฐฉํ•™๋™์•ˆ ๋ด์•ผํ•  ๊นƒ ๊ฐ•์˜ ์ค‘ ํ•˜๋‚˜

์ฃผ์š” ๊ฐœ๋…๋“ค ์ž๋ฃŒ๋“ค ์ฐพ์•„์„œ ๋ณด๊ธฐ ๋ฒˆ๊ฑฐ๋กœ์šฐ๋‹ˆ ์ฐธ๊ณ ํ•  ์šฉ๋„๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌํ–ˆ๋‹ค

 

 

 

 

 

 

 

 


 

 

 

 

๋ธŒ๋žœ์น˜ ์ „๋žต, Flow

 

Flow, Git์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ Branch๋ฅผ ์–ด๋–ค ์‹์œผ๋กœ ์‚ฌ์šฉํ• ์ง€์— ๋Œ€ํ•œ ์ „๋žต

 

 

Local ์ค‘์‹ฌ Git flow

  • ์ฃผ๋กœ ๋กœ์ปฌ ์ €์žฅ์†Œ์—์„œ ๋ธŒ๋žœ์น˜๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ํ•œ ๊ฐœ๋ฐœ ํ๋ฆ„
  • ์ฃผ์š” ๋ธŒ๋žœ์น˜๋กœ๋Š” main(master), develop, release, feature, hotfix ๋“ฑ์ด ์กด์žฌ
  • ์œ„์˜ ๋ธŒ๋žœ์น˜๋“ค๊ณผ ๊ฐ™์ด ๋ชฉ์ ์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ ๋ธŒ๋žœ์น˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ „๋žต
  • ๊ด€๋ฆฌํ•ด์•ผํ•  ๋ธŒ๋žœ์น˜๊ฐ€ ๋งŽ๊ณ , ๋ฐฐํฌํ•˜๊ธฐ๊นŒ์ง€ ๋งŽ์€ ๋‹จ๊ณ„๊ฐ€ ํ•„์š”ํ•ด ๋‹ค์†Œ ๊ฐœ๋ฐœ์†๋„๋Š” ๋А๋ฆด ์ˆ˜ ์žˆ์œผ๋‚˜ ๋ฐฐํฌ ์•ˆ์ •์„ฑ ๋†’์Œ

 

 

 

main (master)

  • ๋ฐฐํฌ์˜ ๊ธฐ์ค€์ด ๋˜๋Š” ๋ธŒ๋žœ์น˜, Release Tag๋ฅผ ๊ธฐ๋ก
  • main ๋ธŒ๋žœ์น˜์— ์ง์ ‘ commit์„ ํ•˜๊ฑฐ๋‚˜ develop, release ๋ธŒ๋žœ์น˜๊ฐ€ ์•„๋‹Œ ๋ธŒ๋žœ์น˜์— merge ํ•˜๋ฉด ์•ˆ๋จ

develop

  • ๊ฐœ๋ฐœ ์ค‘์‹ฌ ๋ธŒ๋žœ์น˜
  • ๋ฐฐํฌ ๋ฒ„์ „๋ณ„ ์ •์˜๋œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜์—ฌ develop ๋ธŒ๋žœ์น˜์— ๋ชจ์Œ
  • ์ฝ”๋“œ ๋ฐฐํฌ์‹œ develop ๋ธŒ๋žœ์น˜๋กœ๋ถ€ํ„ฐ release ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค์–ด ์ค€๋น„
  • ์‹ค์ œ ๊ธฐ๋Šฅ ๊ตฌํ˜„์€ develop ๋ธŒ๋žœ์น˜๊ฐ€ ์•„๋‹Œ feature ๋ธŒ๋žœ์น˜์—์„œ ์ง„ํ–‰

feature

  • ์‹ค์ œ๋กœ ๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜๋Š” ๋ธŒ๋žœ์น˜
  • ๊ธฐ๋Šฅ ๊ตฌํ˜„, ๋ฒ„๊ทธํ”ฝ์Šค, ๋ฆฌํŒฉํ† ๋ง ๋“ฑ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด develop ๋ธŒ๋žœ์น˜๋กœ๋ถ€ํ„ฐ ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค์–ด ์ž‘์—… ์ˆ˜ํ–‰
  • feature ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—…์ด ์™„๋ฃŒ๋œ ๊ฒฝ์šฐ develop ๋ธŒ๋žœ์น˜์— merge ์ง„ํ–‰

release

  • ๋ฐฐํฌ ์ค€๋น„ํ•˜๋Š” ๋ธŒ๋žœ์น˜
  • develop ๋ธŒ๋žœ์น˜์—์„œ ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ๊ฐœ๋ฐœ์ด ๋๋‚˜๋ฉด, release ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค์–ด ๋ฐฐํฌ ์ค€๋น„
  • release ๋ธŒ๋žœ์น˜์—์„œ๋Š” bugfix ๋ฐ ์ถ”๊ฐ€์ ์ธ ๋ฆฌํŒฉํ† ๋ง์„ ์ง„ํ–‰, ์ถ”๊ฐ€๋œ ์ž‘์—…์€ develop ๋ธŒ๋žœ์น˜์—๋„ ๋ฐ˜์˜
  • ๋ฐฐํฌ ์ค€๋น„ ์™„๋ฃŒ์‹œ main ๋ธŒ๋žœ์น˜๋กœ merge ์ง„ํ–‰

hotfix

  • ๋ฐฐํฌ๊ฐ€ ์™„๋ฃŒ๋œ ๋ฒ„์ „ (main ๋ธŒ๋žœ์น˜) ์—์„œ ์‹ฌ๊ฐํ•œ ๋ฒ„๊ทธ๋‚˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ธŒ๋žœ์น˜
  • main ๋ธŒ๋žœ์น˜์—์„œ hotfix ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค์–ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ ํ›„ ํ•„์š”ํ•œ ๋ธŒ๋žœ์น˜๋“ค์— merge

 

 

 

 

Remote ์ค‘์‹ฌ Github flow

  • ๋ฆฌ๋ชจํŠธ ์ €์žฅ์†Œ, Github์—์„œ์˜ ์ž‘์—… ํ๋ฆ„์„ ์ค‘์‹ฌ์œผ๋กœ ํ•จ
  • Git Flow ์— ๋น„ํ•ด ๋” ๋น ๋ฅธ ์†๋„์™€ ๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ๋ฐฐํฌ ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Œ
  • ์ฃผ๋กœ main ๋ธŒ๋žœ์น˜์™€ feature ๋ธŒ๋žœ์น˜๋กœ ๊ตฌ์„ฑ๋จ
    • main ๋ธŒ๋žœ์น˜ : Git Flow์˜ main, develop, release ๋ธŒ๋žœ์น˜์˜ ์—ญํ• ์ด ํ•ฉ์ณ์ง„ ํ˜•ํƒœ
    • feature ๋ธŒ๋žœ์น˜ : Git Flow์˜ feature, hotfix ๋ธŒ๋žœ์น˜์˜ ์—ญํ• ์ด ํ•ฉ์ณ์ง„ ํ˜•ํƒœ
  • Git Flow์™€ ๋‹ฌ๋ฆฌ develop, release ๋ธŒ๋žœ์น˜์ฒ˜๋Ÿผ ๋ฐฐํฌ ์ค€๋น„๋ฅผ ์œ„ํ•œ ๋ธŒ๋žœ์น˜๊ฐ€ ๋”ฐ๋กœ ์—†๊ธฐ์— main ๋ธŒ๋žœ์น˜์— mergeํ•˜๋Š” ์ž‘์—…์€ ๋Š˜ ์กฐ์‹ฌํ•ด์•ผํ•จ

 

 

 

 


 

 

 

 

Commit ๋ฉ”์‹œ์ง€ ์–‘์‹

 

Commit Convention

  • Commit์„ ๋‚จ๊ธฐ๋Š” ๊ทœ์น™
  • ์ผ๊ด€์„ฑ ์žˆ๋Š” Commit Log๋ฅผ ํ†ตํ•ด ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ์ž‘์—… ๋‚ด์šฉ์„ ๋” ์‰ฝ๊ฒŒ ํŒŒ์•… ๋ฐ ์œ ์ง€๋ณด์ˆ˜
  • Header, Body, Footer๋กœ ๊ตฌ์„ฑ๋จ (Body, Footer๋Š” ์„ ํƒ์ ์œผ๋กœ ์‚ฌ์šฉ)

 

 

Subject

  • Commit Log ์ œ๋ชฉ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ถ€๋ถ„
  • 50์ž ๋„˜๊ธฐ์ง€ ์•Š์Œ / ๋Œ€๋ฌธ์ž / ๋งˆ์นจํ‘œ ์‚ฌ์šฉX / ๊ณผ๊ฑฐ ์‹œ์ œ X / ๋ช…๋ น๋ฌธ
    ex) Added(x), Add(o)
  • ์ผ๋ฐ˜์ ์œผ๋กœ Subject์—๋Š” Prefix๋กœ Type์ด ๋ถ™์Œ. Type ๋’ค์— ์ž‘์—…์˜ ๋Œ€๋žต์ ์ธ ๋‚ด์šฉ ์ถ”๊ฐ€
    • feat(์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ), refactor(๋ฆฌํŽ™ํ† ๋ง), fix(๋ฒ„๊ทธ์ˆ˜์ •), style(์ฝ”๋“œ ํฌ๋ฉงํŒ… ๋˜๋Š” ์ฃผ์„์ฒ˜๋ฆฌ), chore(๋นŒ๋“œ ์ˆ˜์ •, ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์ˆ˜์ •), tests(ํ…Œ์ŠคํŠธ ์ฝ”๋“œ), docs(๋ฌธ์„œ ์ž‘์—…) ๋“ฑ

 

Body

  • ์ž‘์—…์— ๋Œ€ํ•œ ์ƒ์„ธ ๊ธฐ๋ก
  • ๋”ฐ๋กœ ํฌ๋งท์ด ์กด์žฌํ•˜์ง€ ์•Š์œผ๋‚˜ Subject์™€ Body ๊ตฌ๋ถ„์œผ๋กœ ํ•œ์นธ ๊ณต๋ฐฑ์„ ๋‘ 
  • ํ•„์ˆ˜๋Š” ์•„๋‹˜. ๊ทธ๋Ÿฌ๋‚˜ Subject๋กœ ์„ค๋ช…์ด ํž˜๋“ค ๊ฒฝ์šฐ Subject๋ฅผ ๋” ๊ฐ„๋žตํ•˜๊ฒŒ ์ž‘์„ฑํ•˜๊ณ  Body์— ๋‚ด์šฉ ์ถ”๊ฐ€

 

Footer

  • ํ•ด๋‹น ์ž‘์—…๊ณผ ๊ด€๋ จ๋œ Issue์˜ Tag ๊ธฐ๋ก
  • Commit Log์— Issue Tag ๋‚จ๊ธฐ๋ฉด Github์—์„œ ์ž๋™์œผ๋กœ ํ•ด๋‹น ํƒœํฌ๋ฅผ ์ธ์‹ํ•˜์—ฌ Issue์— ๊ด€๋ จ๋œ Commit์„ ์—ฐ๊ฒฐ
  • Issue, Commit ์–‘๋ฐฉํ–ฅ์œผ๋กœ ์ฐธ๊ณ ํ•˜๊ธฐ์— ์ž‘์—… History ๊ด€๋ฆฌ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ
  • IssueTag ๋Š” #{Issue๋ฒˆํ˜ธ}๋กœ ์ž‘์„ฑ

 

 

Pre-commit

  • ์ฝ”๋“œ ์ปค๋ฐ‹ ์ „ ์ •ํ•ด์ง„ ๋กœ์ง(hook)๋ฅผ ์ž๋™์œผ๋กœ ์‹คํ–‰
    • ์ฝ”๋“œ ํฌ๋งทํŒ… : ์ฝ”๋“œ์˜ ์ผ๊ด€๋œ ์Šคํƒ€์ผ ์œ ์ง€๋ฅผ ์œ„ํ•œ ํฌ๋งทํŒ…
    • ์ •์  ๋ถ„์„ : ์ฝ”๋“œ์—์„œ ์ž ์žฌ์ ์ธ ๋ฒ„๊ทธ, ๋ณด์•ˆ ์ทจ์•ฝ์ , ์ฝ”๋“œ ํ’ˆ์งˆ ๋ฌธ์ œ ํ™•์ธ
    • ํ…Œ์ŠคํŠธ ์‹คํ–‰ : ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ ์‹คํ–‰ํ•˜์—ฌ ์ƒˆ๋กœ ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•œ ์ฝ”๋“œ๊ฐ€ ๊ธฐ์กด ๋กœ์ง์— ์˜ํ–ฅ์„ ์ฃผ์ง„ ์•Š๋Š”์ง€ ํ™•์ธ
    • ์˜์กด์„ฑ ๊ด€๋ฆฌ : ์ฝ”๋“œ์— ํ•„์š”ํ•œ ๋ชจ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์˜์กด์„ฑ ํ™•์ธ

 

 

 


 

 

 

Issue

  • Issue๋ž€ ๊ฐœ๋ฐœ ์ž‘์—… ๋‹จ์œ„, ์ž‘์—…์˜ History๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค
  • Issue๋กœ Commit Convention๊ณผ ๋น„์Šทํ•˜๊ฒŒ ์•ž์— Type์„ ๋ถ™์—ฌ์ค€๋‹ค
    ex) [FEAT] / [BUG] / [REFACTOR]
  • ๋จผ์ € ์ž‘์—…ํ•  ์‚ฌํ•ญ์ด ์žˆ๋‹ค๋ฉด Issue๋กœ ๋‚ด์šฉ ๋“ฑ๋ก, ๊ฐ Issue์— ๋งž๋Š” feature ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ž‘์—… ์ง„ํ–‰
  • ์—ฌ๊ธฐ์„œ feature ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋ธŒ๋žœ์น˜ ๋ช…์— Issue Tag ๋ถ™์ด๋ฉด, Local์—์„œ ๊ฐ ๋ธŒ๋žœ์น˜๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์ข‹์•„์ง
    ex) feat-3/branch-name (3๋ฒˆ Issue๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๋ธŒ๋žœ์น˜

 

 

  • Issue๋Š” ๊นƒํ—™ ๋ ˆํฌ์˜ Issues ๋ž€์—์„œ New issue๋กœ ์ƒ์„ฑ ๊ฐ€๋Šฅ
  • ์˜ค๋ฅธ์ชฝ ์„ค์ •๋“ค์„ ํ†ตํ•ด ๋‹ด๋‹น์ž, ๋ผ๋ฒจ, ํ”„๋กœ์ ํŠธ ๋“ฑ์„ ์ง€์ • ๊ฐ€๋Šฅ
  • Issue์—๋Š” ์™œ ์ด ์ž‘์—…์„ ํ•ด์•ผํ•˜๊ณ , ์–ด๋–ค ์ž‘์—…์„ ํ•  ๊ฒƒ์ธ์ง€, ๊ด€๋ จ๋œ ๋‹ค๋ฅธ ์ด์Šˆ๋‚˜ ์ž‘์—…์ด ์žˆ๋Š”์ง€ ๋“ฑ์„ ๊ธฐ๋กํ•ด์•ผ ํ•˜๋Š”๋ฐ Issue Template์„ ํ†ตํ•ด ๊ฐ„ํŽธํ•˜๊ฒŒ ์ž‘์„ฑ ๊ฐ€๋Šฅํ•˜๋‹ค
  • Issue์˜ ์ข…๋ฅ˜๋กœ๋Š” ๋Œ€ํ‘œ์ ์œผ๋กœ Feature Request, Bug Report ๋“ฑ์ด ์กด์žฌ

 

 

 

  • ๊ธฐ์กด์˜ ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•ด๋„ ๋˜๊ณ  ๊ฐ ํ”„๋กœ์ ํŠธ, ์ž‘์—…์— ๋”ฐ๋ผ ํ•„์š”ํ•œ ํ…œํ”Œ๋ฆฟ์„ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ๋ณดํ†ต ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ ์„ธํŒ…์œผ๋กœ ์ง„ํ–‰ํ•˜๋ฉด main ๋ธŒ๋žœ์น˜์— ์ง์ ‘ ์ถ”๊ฐ€ํ•œ๋‹ค

 

 

 

https://logan-mle.notion.site/2-Github-Issue-1b6bab3523a74e8aa4e83cf6668abbcf

 

2. Github Issue ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ๋ฐœํ•˜๊ธฐ | Notion

Github์—์„œ Issue๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด Issue Template์„ ์ƒ์„ฑํ•ด๋ณด๊ณ , Issue๋ฅผ ํ†ตํ•ด ์ž‘์—… ๊ด€๋ฆฌ๋ฅผ ํ•ด๋ณด๋Š” ์‹ค์Šต์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

logan-mle.notion.site

 

 

์‹ค์Šต์€ ํ•ด๋‹น ๊ฐ•์˜ ์ž๋ฃŒ ์ฐธ๊ณ 

๊ฐ•์˜์—์„œ๋Š” ํ„ฐ๋ฏธ๋„ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒƒ๊ณผ ๋‹ฌ๋ฆฌ VSCode์—์„œ Git Graph๋ฅผ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ ํฐ ์ฐจ์ด๋Š” ์—†๋‹ค

 

 

์ž„์˜์˜ ๊ฐ„๋‹จํ•œ ์ด์Šˆ๋ฅผ ์ƒ์„ฑ ํ›„ ๋กœ์ปฌ์—์„œ main.py ์ƒ์„ฑํ•˜์—ฌ ์ถ”๊ฐ€ ํ›„ ์ปค๋ฐ‹, ํ‘ธ์‹œํ–ˆ์„ ๋•Œ ์œ„์— ํ‘œ์‹œํ•œ ๋ถ€๋ถ„์ฒ˜๋Ÿผ ์ปค๋ฐ‹์ด ์ด์Šˆ์™€ ์—ฐ๋™๋˜์–ด ํžˆ์Šคํ† ๋ฆฌ๋กœ ๋‚จ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค

์—ฌ๊ธฐ์„œ ์ปค๋ฐ‹ํ•  ๋•Œ ์ฃผ์˜ํ•  ๋ถ€๋ถ„์€ ์ž‘์—…ํ•˜๊ณ ์ž ํ•˜๋Š” ์ด์Šˆ์˜ ํ•ด๋‹น ํƒœ๊ทธ ๋ฒˆํ˜ธ๋ฅผ ์ž˜ ํ™•์ธํ•˜๊ณ  ํƒœ๊น…ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ

feat: Add add function #2

์ด๋Ÿฐ ์‹์œผ๋กœ ์ปค๋ฐ‹์„ ๋‚จ๊ธธ ๋•Œ ์ด์Šˆ ํƒœ๊น…์„ ์ž˜ ํ•ด์ค˜์•ผํ•œ๋‹ค

 

 

 

 

 


 

 

 

 

 

Pull Request

  • ๋ณดํ†ต PR์ด๋ผ ๋ถ€๋ฅด๋Š” Pull Request๋Š” ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜๋กœ Merge ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๊ธฐ ์ „ ํŒ€์›์—๊ฒŒ ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ›๋Š” ๋‹จ๊ณ„์ด๋‹ค
  • ๊ฐ•์˜์—์„œ๋Š” ์ž‘์—… ๊ฐœ์š”, ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„, ์ฐธ๊ณ  ์‚ฌํ•ญ, ๊ด€๋ จ ์ด์Šˆ ๋“ฑ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š”๋ฐ ์ด๋Ÿฐ ๋‚ด์šฉ๊ณผ ํ…œํ”Œ๋ฆฟ์€ ํšŒ์‚ฌ์™€ ํŒ€๋งˆ๋‹ค ์ฐจ์ด๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค
  • ์ƒ์„ธ ๋‚ด์šฉ์€ ๊ฐ•์‚ฌ๋‹˜ ์ž๋ฃŒ ์ฐธ๊ณ 

 

https://logan-mle.notion.site/3-Github-Pull-Request-d26cb4a1623f42c0a73fa34ae4e29ed4

 

3. Github Pull Request๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋ฐ›๊ธฐ | Notion

์ฝ”๋“œ๋ฅผ Merge ํ•˜๊ธฐ ์œ„ํ•ด ํŒ€์›์—๊ฒŒ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ›๋Š” ๋‹จ๊ณ„์ธ Pull Request์— ๋Œ€ํ•œ Template ์ƒ์„ฑ๊ณผ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์‹ค์Šต์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

logan-mle.notion.site

 

  • ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌํ•ด๋ณด๋ฉด
    • PR๋•Œ ์‚ฌ์šฉํ•  ํ…œํ”Œ๋ฆฟ์„ .github ๋””๋ ‰ํ† ๋ฆฌ์— ์ถ”๊ฐ€ (๊นƒํ—ˆ๋ธŒ์—์„œ main ๋ธŒ๋žœ์น˜์— ์ง์ ‘ ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ๊ณ  ๋กœ์ปฌ์—์„œ ์ถ”๊ฐ€ํ•  ๊ฒฝ์šฐ main ๋ธŒ๋žœ์น˜์—์„œ ์ƒ์„ฑ ํ›„ ์ปค๋ฐ‹ ๋ฐ ํ‘ธ์‹œํ•ด์ค„ ๊ฒƒ)
    • ์ด์ „์— Push ํ›„ main์— ๋ณ‘ํ•ฉ๋˜์ง€ ์•Š์€ feature ๋ธŒ๋žœ์น˜๋ฅผ ๊นƒํ—ˆ๋ธŒ์—์„œ Compare & pull request๋ฅผ ํด๋ฆญํ•œ๋‹ค
    • ์ถ”๊ฐ€ํ•œ PR ํ…œํ”Œ๋ฆฟ์— ์ž‘์—… ๋‚ด์šฉ ๋“ฑ์„ ์ž‘์„ฑ ํ›„ Create pull request. ๋ฆฌ๋ทฐ์–ด ๋ฐ ๋‹ด๋‹น์ž, ๋ผ๋ฒจ ๋“ฑ์„ ์„ค์ •ํ•ด์ค€๋‹ค
    • ์ •์ƒ์ ์œผ๋กœ ์ง„ํ–‰๋˜์—ˆ๋‹ค๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ ์ด์Šˆ์™€ ์ž‘์—… ๋‚ด์šฉ ์‚ฌํ•ญ๋“ค์„ ํ™•์ธํ•˜๋ฉฐ ๋ฆฌ๋ทฐ๋ฅผ ์‹œ์ž‘ํ•œ๋‹ค

 

  • Issue Tags์—์„œ ํŠน์ • ํ‚ค์›Œ๋“œ์™€ Issue Tag๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ์ž๋™์œผ๋กœ Issue๊ฐ€ ๋‹ซํžˆ๊ฒŒ๋” ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค
  • close, closes, closed, fix, fixes, fixed, resolve, resolves, resolved

 

 

 

๋ฆฌ๋ทฐ ์‹œ comment์™€ review๋กœ ๋ฆฌ๋ทฐ๋ฅผ ๋‚จ๊ธธ ์ˆ˜ ์žˆ๋‹ค

  • Add single comment
    • ๋‚จ๊ธด ์ฝ”๋ฉ˜ํŠธ๋ฅผ ๋ฐ”๋กœ ๋ณด์—ฌ์ฃผ๋Š” ๋ฐฉ์‹, ๋ฉ”์„ธ์ง€ ํ•˜๋‚˜ํ•˜๋‚˜๋ฅผ ๊ฐœ๋ณ„ ๋ฆฌ๋ทฐ๋กœ ๋‚จ๊ธด๋‹ค
  • Start a review
    • ์—ฌ๋Ÿฌ ์ฝ”๋ฉ˜ํŠธ๋ฅผ ๋‚จ๊ธฐ๊ณ  ์ฝ”๋ฉ˜ํŠธ๋ฅผ ๋ชจ์•„์„œ ํ•œ๋ฒˆ์— ๋ฆฌ๋ทฐ ๋ฉ”์„ธ์ง€์™€ ํ•จ๊ป˜ ๋ณด์—ฌ์ฃผ๋Š” ๋ฐฉ์‹

 

 

์ด๋ ‡๊ฒŒ ์ฝ”๋“œ์— ๋Œ€ํ•ด ๋‚จ๊ฒจ์ฃผ๋Š” ๋‚ด์šฉ๋“ค์„ ๋ณด๋ฉด์„œ ๋‹ค์‹œ ์ˆ˜์ •ํ•ด์„œ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐ˜๋ณตํ•˜๊ณ  ์กฐ๊ฑด์ด ๋งŒ์กฑ๋˜์—ˆ๋‹ค๋ฉด Merge๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค

์ฝ”๋“œ๋ฅผ Merge ํ•  ๋•Œ 3๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค

 

  • Create a merge commit - Merge Commit์„ ๋‚จ๊ธฐ๊ณ  ์ฝ”๋“œ๋ฅผ Merge
    • ๋ธŒ๋žœ์น˜์—์„œ ๋ฐœ์ƒํ•œ Commit Log + Merge Commit
  • Squash and merge - ๋ธŒ๋žœ์น˜ ๋‚ด์— ์ถ”๊ฐ€๋œ ๋ชจ๋“  Commit์„ ํ•˜๋‚˜์˜ Commit์œผ๋กœ Squash ํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ Merge
    • ๋ธŒ๋žœ์น˜์—์„œ ๋ฐœ์ƒํ•œ Commit Log๋ฅผ ํ•ฉ์นœ ํ•˜๋‚˜์˜ Commit
  • Rebase and merge - ๋ธŒ๋žœ์น˜๋ฅผ ๋Œ€์ƒ ๋ธŒ๋žœ์น˜์™€ Rebase ํ›„ Merge
    • ๋ธŒ๋žœ์น˜์—์„œ ๋ฐœ์ƒํ•œ Commit Log

 

Pre-commit ์ ์šฉ

 

https://logan-mle.notion.site/4-Pre-commit-cf428cdc8dce441887b6790de5a42319

 

4. Pre-commit ์œผ๋กœ ์ฝ”๋“œ ํฌ๋งทํŒ… ์ž๋™ํ™” ํ•˜๊ธฐ | Notion

Pre-commit์„ ์„ค์ •ํ•˜์—ฌ ์ฝ”๋“œ ๋ณ€๊ฒฝ์„ Commit ํ•  ๋•Œ ์ฝ”๋“œ ํฌ๋งทํŒ…์„ ์ž๋™ํ™”ํ•˜๋Š” ์‹ค์Šต์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

logan-mle.notion.site

 

์ถ”๊ฐ€๋กœ ์œ„์— commit ๋ฉ”์„ธ์ง€ ์–‘์‹ ๋ถ€๋ถ„์—์„œ pre-commit์— ๋Œ€ํ•œ ์„ค๋ช…์ด ์žˆ์—ˆ๋Š”๋ฐ ์—ฌ๊ธฐ์— ๋Œ€ํ•œ ์‹ค์Šต๋„ ์žˆ์–ด์„œ ๊ฐ™์ด ์ง„ํ–‰ํ•ด๋ณด์•˜๋‹ค

ํ•ด๋‹น ํŽ˜์ด์ง€์—์„œ ์ž˜ ์„ค๋ช…๋˜์–ด ์žˆ์œผ๋‹ˆ ์ž์„ธํ•œ ๋‚ด์šฉ์„ ์„œ์ˆ ํ•˜์ง„ ์•Š๊ณ  ๊ฐ„๋‹จํžˆ๋งŒ ์ •๋ฆฌ

  • pre-commit ์ถ”๊ฐ€ํ•œ๋‹ค๋Š” ์ด์Šˆ ์ƒ์„ฑ
  • ํ•ด๋‹น ๊ธฐ๋Šฅ ๊ตฌํ˜„์„ ์œ„ํ•œ ๋กœ์ปฌ์—์„œ feature ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ
  • pre-commit ์„ค์น˜ (pip install pre-commit)
  • pre-commit config ์„ค์ • 
    • ํ„ฐ๋ฏธ๋„์—์„œ pre-commit sample-config > .pre-commit-config.yaml ์‹คํ–‰ํ•˜๋ฉด ์ƒ˜ํ”Œ config yaml ์ƒ์„ฑ๋จ
    • ๊ณต๋ฐฑ ์ œ๊ฑฐ, end-of-file ๊ฒ€์‚ฌ, yaml ๊ฒ€์‚ฌ, ๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ ๊ฒ€์‚ฌ ๋“ฑ์ด ๊ธฐ๋ณธ hook์œผ๋กœ ์„ค์ •
  • pre-commit autoupdate ๋ช…๋ น์–ด๋กœ ์„ค์ •๋œ hook๋“ค ์—…๋ฐ์ดํŠธ
  • pre-commit install ๋ช…๋ น์–ด๋กœ ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์— pre-commit ์„ค์น˜
    ์ด์ œ ํ”„๋กœ์ ํŠธ์—์„œ commit์„ ์ˆ˜ํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ์ •์˜๋œ hook๋“ค์ด ์‹คํ–‰๋œ๋‹ค
  • ์‹ค์Šต์—์„œ๋Š” ํ„ฐ๋ฏธ๋„์—์„œ ์ปค๋ฐ‹์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— pre-commit ์ดˆ๊ธฐํ™”์™€ ์ •์˜๋œ hook๋“ค์ด ์‹คํ–‰๋˜๋Š” ๋‚ด์—ญ๋“ค์ด ์ถœ๋ ฅ๋˜์ง€๋งŒ vscode์˜ ๊นƒ ๊ทธ๋ž˜ํ”„๋กœ ์ปค๋ฐ‹ํ•  ๊ฒฝ์šฐ ์ถœ๋ ฅ์ด ๋‚˜์˜ค๋Š”๋Œ€์‹  ์ปค๋ฐ‹๊ณผ pre-commit ์ž‘์—…๋“ค์ด ์ง„ํ–‰๋˜๊ธฐ์— ์ข€ ๋” ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค
  • ๊ธฐ์กด ์ฝ”๋“œ์— pre-commit ์ ์šฉ
    • pre-commit run --all-files ๋ช…๋ น์–ด๋กœ ์ „์ฒด ํŒŒ์ผ์„ ๊ฒ€์‚ฌ ๋ฐ ์ˆ˜์ •

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ด์Šˆ์— ์ปค๋ฐ‹๋“ค์ด ์—ฐ๊ฒฐ๋˜์–ด ํžˆ์Šคํ† ๋ฆฌ๊ฐ€ ๋‚จ๊ณ  ํ‘ธ์‹œํ•œ feature ๋ธŒ๋žœ์น˜์— ๋Œ€ํ•ด์„œ PR์„ ์ง„ํ–‰ํ•˜์—ฌ ์ฝ”๋“œ ๋ฆฌ๋ทฐ, Mergeํ•˜๋ฉด pre-commit๊นŒ์ง€ ์ ์šฉํ•˜๋Š” ์‹ค์Šต์„ ๋งˆ์น˜๊ฒŒ๋œ๋‹ค

 

 

 

 

 


 

 

 

 

 

Tag

  • ํŠน์ • ์ปค๋ฐ‹์— ๋Œ€ํ•œ ํ‘œ์‹œ
  • ํŠน์ • ์‹œ์ ์—์„œ ์ฝ”๋“œ๊ฐ€ ์•ˆ์ •ํ™”๋˜๊ฑฐ๋‚˜ ํŠน๋ณ„ํ•œ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ํŠน์ • ์ปค๋ฐ‹์— ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•˜์—ฌ ํ•ด๋‹น ์‹œ์ ์„ ๊ธฐ๋ก
  • ์ฃผ๋กœ ๋ฒ„์ „ ๋ฒˆํ˜ธ์™€ ์‚ฌ์šฉ, ์ผ๋ฐ˜์ ์œผ๋กœ ์ถœ์‹œ๋œ ๋ฒ„์ „์— ๋Œ€ํ•œ ํƒœ๊ทธ๋ฅผ ์ง€์ •
    • Lightweight Tag : ๋ฒ„์ „๋งŒ์„ ๊ธฐ๋กํ•˜๋Š” Tag
    • Annotated Tag : ํƒœ๊ทธ๋ฅผ ์ƒ์„ฑํ•œ ์œ ์ €, ์ด๋ฉ”์ผ, ํƒœ๊ทธ ์ƒ์„ฑ ๋‚ ์งœ, ํƒœ๊ทธ ๋ฉ”์‹œ์ง€ ๋“ฑ์„ ํ•จ๊ป˜ ๊ธฐ๋กํ•˜๋Š” Tag

 

Semantic Versioning

  • ์†Œํ”„ํŠธ์›จ์–ด ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ํ‘œ์ค€๋ฐฉ๋ฒ•๋ก  ์ค‘ ํ•˜๋‚˜, ์ฃผ๋กœ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋จ
  • ๋ฒ„์ „ ๋ฒˆํ˜ธ ๋ถ€์—ฌ๋ฅผ ํ†ตํ•ด ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ช…ํ™•ํžˆ ํ•˜๊ณ , ๋ฒ„์ „ ๊ฐ„ ํ˜ธํ™˜์„ฑ ๊ด€๋ฆฌ์— ๋„์›€์„ ์คŒ
  • ์‹œ๋งจํ‹ฑ ๋ฒ„์ „ ํ˜•์‹ : MAJOR.MINOR.PATCH
    • MAJOR : ์ฃผ ๋ฒ„์ „ ๋ฒˆํ˜ธ / ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์ด ์—†๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ์„ ๋•Œ ์ฆ๊ฐ€ / ์ฃผ๋กœ ํฐ ๊ธฐ๋Šฅ์˜ ์ถ”๊ฐ€, ๊ธฐ์กด ๊ธฐ๋Šฅ ๋ณ€๊ฒฝ์ด ์žˆ์„ ๋•Œ ์ฆ๊ฐ€
    • MINOR : ๋ถ€ ๋ฒ„์ „ ๋ฒˆํ˜ธ / ํ•˜์œ„ ํ˜ธํ™˜์„ฑ ์œ ์ง€ํ•˜๋ฉด์„œ ๊ธฐ๋Šฅ ์ถ”๊ฐ€๋  ๋•Œ ์ฆ๊ฐ€ / ์ฃผ๋กœ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€์‹œ ์ฆ๊ฐ€
    • PATCH : ํŒจ์น˜ ๋ฒˆํ˜ธ / ๊ธฐ์กด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๋ฒ„๊ทธ ์ˆ˜์ • ๋“ฑ ํ•˜์œ„ ํ˜ธํ™˜์  ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์žˆ์„ ์‹œ ์ฆ๊ฐ€

 

Tag ์ƒ์„ฑ ๋ฐ ๋ช…๋ น์–ด

  • git tag <tagname> ์œผ๋กœ ํƒœ๊ทธ ์ƒ์„ฑ
    -a ์˜ต์…˜์œผ๋กœ Annotated Tag ์ƒ์„ฑ
  • git tag : ์ƒ์„ฑ๋œ ํƒœ๊ทธ ํ™•์ธ
  • git show <tag name> : ํƒœ๊ทธ ์ƒ์„ธ ๋‚ด์šฉ ํ™•์ธ
  • git push origin <tag name> : Tag๋ฅผ ๊นƒํ—™์— ์—…๋กœ๋“œ
  • git log : ํ˜„์žฌ commit์— tag ๋“ฑ๋ก๋œ ๊ฒƒ ํ™•์ธ

 

 

Release

  • ํŠน์ • ํƒœ๊ทธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๊ณต์‹์ ์ธ ๋ฐฐํฌ๋ฅผ ๋‚˜ํƒ€๋ƒ„
  • ์ƒ์„ฑํ•œ ํƒœ๊ทธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊นƒํ—™์—์„œ Release ๋ฒ„์ „์„ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ์Œ
  • ๋ฆด๋ฆฌ์ฆˆ ํŽ˜์ด์ง€๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž์—๊ฒŒ ์ƒˆ๋กœ์šด ๋ฒ„์ „์˜ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ œ๊ณตํ•˜๊ณ , ํ•ด๋‹น ๋ฒ„์ „์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๋ฐ ๋ฆด๋ฆฌ์ฆˆ ๋…ธํŠธ ์ œ๊ณต

 

 

 

 

Git Tag ๋ฐ Github Release ์ƒ์„ฑ

 

https://logan-mle.notion.site/5-Git-Tag-Github-Release-255e7e0b6ab849e09924cf7733e0b8fb

 

5. Git Tag & Github Release ์ƒ์„ฑํ•˜๊ธฐ | Notion

Git Tag์™€ Semantic Versioning์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฒ„์ „์„ ๊ธฐ๋กํ•ด๋ด…๋‹ˆ๋‹ค. ๊ธฐ๋กํ•œ Tag๋กœ Github์—์„œ Release๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์‹ค์Šต์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

logan-mle.notion.site

 

  • git tag v0.1.0 ๋ช…๋ น์–ด๋กœ ์ดˆ๊ธฐ ๋ฒ„์ „ ์ž‘์„ฑ
  • git push origin v0.1.0 ์œผ๋กœ ์ƒ์„ฑํ•œ Git Tag๋ฅผ Github Repo๋กœ ํ‘ธ์‹œ
C:\Users\userpc\Downloads\git_study\WORK1\git-study2>git push origin v0.1.0
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
To https://github.com/bbonghag/git-study2.git
 * [new tag]         v0.1.0 -> v0.1.0

 

์•„๋ž˜ ์ € ๋ถ€๋ถ„์„ ๋ˆŒ๋Ÿฌ์„œ ํƒœ๊ทธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค

 

 

 

  • ์ฃผ์˜ํ•  ์ ์œผ๋กœ๋Š” vscode ๊นƒ ๊ทธ๋ž˜ํ”„ GUI๋กœ ์ž‘์—…ํ•˜๋Š” ๊ฑธ๋กœ ํ‘ธ์‹œํ•˜๋ฉด ํ•ด๋‹น ํƒœ๊ทธ๊ฐ€ ๋ ˆํฌ์— ํ‘ธ์‹œ๋˜์ง€ ์•Š๋Š”๋‹ค
  • ๊ฐ„๋‹จํ•œ ์ปค๋ฐ‹, ํ‘ธ์‹œ์™€ ํ’€ ์ •๋„๋Š” GUI์˜ ๋‹จ์ถ•ํ‚ค๋กœ ์‚ฌ์šฉํ•˜๋˜ ๊ฒฐ๊ตญ์—๋Š” ํ„ฐ๋ฏธ๋„๋กœ๋„ ์ž‘์—…ํ•  ์ค„ ์•Œ์•„์•ผํ•œ๋‹ค
  • ๋ชจ๋“  ๋ช…๋ น์–ด๊นŒ์ง€ ๋‹ค ์ •๋ฆฌํ•˜๊ธฐ์—” ๋‚ด์šฉ์ด ๋„ˆ๋ฌด ๋งŽ๊ธฐ์—.. ์ฃผ์š” ๋ช…๋ น์–ด ์œ„์ฃผ๋กœ๋งŒ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌ

 

 

 

  • ์œ„์— ์˜ค๋ฅธ์ชฝ Release ๋ถ€๋ถ„์—์„œ ์•„๋ž˜์— Create a new release ๋ฅผ ๋ˆ„๋ฅด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์ฐฝ์ด ๋‚˜์˜จ๋‹ค
  • Tag๋ฅผ ๋ˆŒ๋Ÿฌ๋ณด๋ฉด ์ด์ „์— ๋“ฑ๋กํ•œ v0.1.0์„ ์„ ํƒ, Generate release notes๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ œ๋ชฉ๊ณผ ๋‚ด์šฉ๋“ค์„ ์ž๋™์œผ๋กœ ์ž‘์„ฑํ•ด์ค€๋‹ค
  • ์ž๋™ ์ž‘์„ฑํ•  ๊ฒฝ์šฐ ์ด์ „ Release์™€ ํ˜„์žฌ Release ์‚ฌ์ด์— ์ถ”๊ฐ€๋œ Pull Request์˜ ์ด๋ฆ„์ด ํฌํ•จ๋œ๋‹ค
  • ๋งจ ์•„๋ž˜ Publish release ๋ˆ„๋ฅด๋ฉด Release ์ƒ์„ฑ ์™„๋ฃŒ

 

 

 


 

 

Github Action

  • Github์—์„œ ์ œ๊ณต๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ์›Œํฌ ํ”Œ๋กœ์šฐ
  • Github Repo์—์„œ ๋นŒ๋“œ, ํ…Œ์ŠคํŠธ, ๋ฐฐํฌ์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์ž‘์—…์„ YAML ํŒŒ์ผ๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค

 

 

๊ตฌ์„ฑ ์š”์†Œ ์„ค๋ช…  ์˜ˆ์‹œ
Workflow ์ž๋™ํ™” ์ „์ฒด ๋‹จ์œ„๋ฅผ ์ •์˜ํ•˜๋Š” YAML ํŒŒ์ผ. Job๊ณผ Step๋“ค๋กœ ๊ตฌ์„ฑ๋จ
.github/workflows/ ํด๋”์— ์œ„์น˜.
ci.yml, deploy.yml
Event (Trigger) Workflow๊ฐ€ ์‹คํ–‰๋˜๋Š” ๊ณ„๊ธฐ(ํŠธ๋ฆฌ๊ฑฐ)
ex) push, pull_request, issue ๋“ฑ
on: push, on: pull_request
Job Workflow ์•ˆ์—์„œ ์‹คํ–‰๋˜๋Š” ์ž‘์—… ๋‹จ์œ„.
๊ฐ Job์€ ๋…๋ฆฝ์ ์ธ Runner ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰.
jobs: build:
Runner ์‹ค์ œ Job์„ ์‹คํ–‰ํ•˜๋Š” ์„œ๋ฒ„ ํ™˜๊ฒฝ (๋จธ์‹ ).
GitHub-hosted(๊ธฐ๋ณธ ์ œ๊ณต) ๋˜๋Š” Self-hosted ๊ฐ€๋Šฅ.
runs-on: ubuntu-latest
Step Job ์•ˆ์˜ ๋‹จ๊ณ„ ๋‹จ์œ„ ๋ช…๋ น์–ด ๋˜๋Š” Action ์‹คํ–‰ ๋‹จ์œ„. steps: - name: Checkout code
Action ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ž‘์—… ๋‹จ์œ„(๋ชจ๋“ˆ). Step ์•ˆ์—์„œ ์‹คํ–‰๋˜๋ฉฐ, Marketplace์—์„œ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ์ง์ ‘ ์ž‘์„ฑ ๊ฐ€๋Šฅ. uses: actions/checkout@v4
Command (run) Action ๋Œ€์‹  ์ง์ ‘ ๋ช…๋ น์–ด ์‹คํ–‰. Shell ๋ช…๋ น์–ด๋ฅผ ๋ฐ”๋กœ ์ˆ˜ํ–‰. run: npm install
Artifact Job ๊ฐ„ ๋˜๋Š” Workflow ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ·๋ณด์กดํ•  ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ. ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ, ๋นŒ๋“œ ํŒŒ์ผ ๋“ฑ
Secret ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ(API ํ‚ค, ํ† ํฐ ๋“ฑ)๋ฅผ ์•”ํ˜ธํ™” ์ €์žฅ ํ›„ ํ™˜๊ฒฝ ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ์‚ฌ์šฉ. {{ secrets.GITHUB_TOKEN }}
Matrix ์—ฌ๋Ÿฌ ํ™˜๊ฒฝ(์˜ˆ: OS, Python ๋ฒ„์ „ ๋“ฑ)์— ๋Œ€ํ•ด ๋ณ‘๋ ฌ Job ์‹คํ–‰. strategy: matrix: os: [ubuntu, windows]
Environment / Context Workflow ๋‚ด๋ถ€์—์„œ ์ฐธ์กฐ ๊ฐ€๋Šฅํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ, ๋ณ€์ˆ˜ ์ •๋ณด ์ง‘ํ•ฉ. {{ github.ref }}, {{ env.VARIABLE }}

 

 

 

๋Œ€๋ถ€๋ถ„ ๊ทธ๋ ‡์ง€๋งŒ ์ง์ ‘ ์‹ค์Šตํ•ด๋ณด๋Š”๊ฒŒ ๋ฒ ์ŠคํŠธ

์•„๋ž˜ ์ž๋ฃŒ ์ฐธ๊ณ 

 

https://logan-mle.notion.site/6-Github-Action-Workflow-50377538a9734bd0a28765deaa659417

 

6. Github Action Workflow ์ž๋™ํ™” ํ•˜๊ธฐ | Notion

Github Action์„ ํ™œ์šฉํ•˜์—ฌ ํŠน์ •ํ•œ ์กฐ๊ฑด์— ์˜ํ•ด ์‹คํ–‰๋˜๋Š” Workflow๋ฅผ ์ •์˜ํ•˜๊ณ , ์‹คํ–‰ํ•ด๋ณด๋Š” ์‹ค์Šต์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

logan-mle.notion.site

 

 

ํ•ด๋‹น ์‹ค์Šต ๋‚ด์šฉ์€ ๋„ˆ๋ฌด ๋งŽ์•„์„œ ๋‹ค ์ •๋ฆฌ๋Š” ๋ชปํ•˜๊ณ  ๋Œ€์‹  ์ค‘๊ฐ„์— ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค

์ด์ „์˜ ์‹ค์Šต ๋ถ€๋ถ„๊ณผ ํ˜„์žฌ ์ง„ํ–‰์ค‘์ธ ๋‚ด์šฉ์ด ์ถฉ๋Œํ•ด์„œ ๋ฐœ์ƒํ•œ, ๊ฝค๋‚˜ ์œ ์˜๋ฏธํ•œ ๋ฌธ์ œ๋ผ ๋„์ ์ด๊ธฐ..

 

 

์ƒํ™ฉ์€ Pytest Workflow๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ์ƒํƒœ

 

๋กœ์ปฌ์—์„œ ์ƒˆ๋กœ์šด feature ๋ธŒ๋žœ์น˜ ํ•˜๋‚˜ ํŒŒ์„œ ์‹ค์Šต ๋‚ด์šฉ๋Œ€๋กœ ์ญ‰ ์ง„ํ–‰ํ•˜๊ณ  ์ปค๋ฐ‹! ํ‘ธ์‹œ!! PR๊นŒ์ง€!!

๊ทธ๋Ÿฌ๋‚˜ ๊ทธ ์ค‘ requirements.txt๋ฅผ ๋น ๋œจ๋ ค์„œ ์•„๋ž˜์˜ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค

 

requirements.txt๋ฅผ ๋งŒ๋“ค๊ณ  ๋‹ค์‹œ ํ‘ธ์‹œ -> ์•„ pytest ์ž‘์„ฑ์„ ๋˜ ๊นŒ๋จน์–ด์„œ ์—๋Ÿฌ ๋ฐœ์ƒ..

 

 

 

 

๊ทธ๋ž˜์„œ requirements.txt์— pytest๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๋‹ค์‹œ ์ปค๋ฐ‹ํ•˜๋ ค๋Š”๋ฐ ์•„๋ž˜์˜ ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค

> git -c user.useConfigOnly=true commit --quiet --allow-empty-message --file - --allow-empty-message
trim trailing whitespace.................................................Passed
fix end of files.........................................................Failed
- hook id: end-of-file-fixer
- exit code: 1
- files were modified by this hook

Fixing requirements.txt

check yaml...........................................(no files to check)Skipped
check for added large files..............................................Passed
black................................................(no files to check)Skipped

 

๋ญ”์†Œ๋ฆฌ๊ณ ...

 

 

 

fix end of files.........................................................Failed
- hook id: end-of-file-fixer
- exit code: 1
- files were modified by this hook

Fixing requirements.txt

 

  • ์ด ๋ถ€๋ถ„์ด ํ•ต์‹ฌ. pre-commit์˜ hook์ด ์‹คํ–‰๋˜์—ˆ๋Š”๋ฐ Failed์ด๋ผ ๋œฌ๋‹ค
  • end-of-file-fixer ํ›…์ด requirements.txt ํŒŒ์ผ์„ ์ž๋™์œผ๋กœ ์ˆ˜์ •ํ–ˆ๋‹ค๋Š” ๋œป
  • ๊ตฌ์ฒด์ ์œผ๋กœ๋Š” “ํŒŒ์ผ ๋์— newline(๊ฐœํ–‰๋ฌธ์ž)”์ด ์—†์–ด์„œ pre-commit์ด ์ž๋™์œผ๋กœ ์ถ”๊ฐ€ํ•œ ๊ฒƒ

์ด๋ ‡๊ฒŒ ๋˜์—ˆ์„ ๋•Œ ์Šคํ…Œ์ด์ง€์—๋Š” ์ˆ˜์ •๋˜์ง€ ์•Š์€ requirements.txt๊ฐ€ ์˜ฌ๋ผ๊ฐ€์žˆ๊ณ  ์ˆ˜์ •๋œ requirements.txt๊ฐ€ ๋˜ ์กด์žฌํ•œ๋‹ค

์ˆ˜์ •๋˜์ง€ ์•Š์€  requirements.txt ๋Š” ๋‚ด๋ฆฌ๊ณ  ์ˆ˜์ •๋œ requirements.txt๋ฅผ ์Šคํ…Œ์ด์ง€์— ์˜ฌ๋ ค์„œ ๋‹ค์‹œ ์ปค๋ฐ‹ํ•˜๋ฉด ์ •์ƒ ๋™์ž‘ํ•œ๋‹ค!!

์ € ์ˆ˜์ •์•ˆ๋œ ํŒŒ์ผ ๊ทธ๋Œ€๋กœ ๋‘” ์ฑ„๋กœ ์ปค๋ฐ‹ํ•˜๋ฉด ๋™์ผํ•œ ์ปค๋ฐ‹ ์ค‘๋‹จ์ด ๊ณ„์† ๋ฐœ์ƒํ•˜๋‹ˆ ์ฃผ์˜ํ•  ๊ฒƒ 

 

 

์ •๋ฆฌํ•˜์ž๋ฉด

  • pre-commit์€ ์ปค๋ฐ‹ ์ „์— ์ฝ”๋“œ ํฌ๋งท, ์Šคํƒ€์ผ ๋“ฑ์„ ๊ฒ€์‚ฌํ•˜๊ณ  ์ˆ˜์ •ํ•˜๋Š” ํˆด
  • end-of-file-fixer ํ›…์€ ๋ชจ๋“  ํŒŒ์ผ์˜ ๋์ด ๋ฐ˜๋“œ์‹œ ๊ฐœํ–‰ ๋ฌธ์ž๋กœ ๋๋‚˜๋„๋ก ๊ฐ•์ œํ•œ๋‹ค
  • ์‹คํŒจ(Failed)๋กœ ํ‘œ์‹œ๋œ ๊ฑด ์—๋Ÿฌ๊ฐ€ ์•„๋‹ˆ๋ผ, ์ˆ˜์ •์ด ์ด๋ฃจ์–ด์กŒ๋‹ค๋Š” ๋œป
    → requirements.txt๋ฅผ ์ž๋™ ์ˆ˜์ •ํ–ˆ๊ณ , ์ปค๋ฐ‹์€ ๋ฉˆ์ท„์Œ.

 

 

 

ํœด ์ •์ƒ ๋™์ž‘ ์™„๋ฃŒ..

 

 

 

์ถ”๊ฐ€๋กœ ํ™•์ธํ•ด๋ณด๋ฉด ์ข‹์€ workflow ์˜ˆ์ œ๋“ค

Github Release Drafter Workflow

- main ๋ธŒ๋žœ์น˜์— ์ฝ”๋“œ๊ฐ€ Merge ๋˜๋ฉด ์ž๋™์œผ๋กœ Git Tag ๋ฐ Release Drafter๋ฅผ ์ƒ์„ฑํ•˜๋Š” Workflow

- ์ถ”ํ›„ ์ž๋™ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ(CD, Continuous Deployment)์—์„œ Release๊ฐ€ Publish ๋˜๋Š” ๊ฒƒ์„ ๊ฐ์ง€ํ•˜์—ฌ ๋ฐฐํฌ๋˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

- ์„ค๋ช…์€ https://jiyeonseo.github.io/2022/10/15/github-action-release-drafter/ ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

 

Google Cloud Platform Cloud Run ๋ฐฐํฌ Workflow

- main ๋ธŒ๋žœ์น˜์— ์ฝ”๋“œ๊ฐ€ Merge ๋˜๋ฉด GCP Cloud Run์œผ๋กœ ๋ฐฐํฌํ•˜๋Š” Workflow

- Docker Image Build → GCR Docker Image Push → Cloud Run Deploy

- ์„ค๋ช…์€ 5.2. CI/CD Workflow ์ถ”๊ฐ€ํ•˜๊ธฐ ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

- https://github.com/Ilevk/fastapi-tutorial/blob/main/.github/workflows/cd_workflow.yaml

 

์š”๊ฑด ๋‚˜์ค‘์— ํ•œ๋ฒˆ ํ•ด๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์„œ ๊ฐ€์ด๋“œ์— ์žˆ๋Š” ๋‚ด์šฉ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ์™”๋‹ค

๋‘ ๋ฒˆ์งธ ์˜ˆ์ œ, GCP๋Š” ์•„๋‹ˆ์ง€๋งŒ ์ด์ „ Azure ๊ต์œก ๋“ค์œผ๋ฉด์„œ ๋ ˆํฌ์— ์ฝ”๋“œ ํ‘ธ์‹œ๋  ๊ฒฝ์šฐ Docker Image Build -> Azure Container Registry Push -> ArgoCD๋กœ AKS ์ด๋ฏธ์ง€-์ปจํ…Œ์ด๋„ˆ ๋ฐฐํฌ๊นŒ์ง€ ์ž‘์—…ํ–ˆ๋˜ ์ ์ด ์žˆ๋Š”๋ฐ ๊ธฐ๋กํ–ˆ๋˜ ๋‚ด์šฉ๋“ค ๋ธ”๋กœ๊ทธ ๊ธ€๋กœ ์ •๋ฆฌํ•ด์•ผ๊ฒ ๋‹ค

 

 

 

 

 


 

 

Readme

  • Github Repository์— ๋“ค์–ด๊ฐ”์„ ๋•Œ ๋งŒ๋‚˜๋Š” ๊ฐ€์žฅ ์ฒซ ํŽ˜์ด์ง€์ด์ž ํ”„๋กœ์ ํŠธ์˜ ์–ผ๊ตด
  • Markdown ๋ฌธ๋ฒ•์— ๋”ฐ๋ผ ์ž‘์„ฑ์‹œ Github ํŽ˜์ด์ง€์—์„œ ์ž๋™์œผ๋กœ ๋ Œ๋”๋ง๋˜์–ด ๋ณด์—ฌ์ง„๋‹ค
  • ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์†Œ๊ฐœ ๋ฐ ์„ค๋ช…, ๋ชฉ์ , ์‚ฌ์šฉ ๋ฐฉ๋ฒ•, ์„ค์น˜ ๋ฐฉ๋ฒ• ๋“ฑ ์‚ฌ์šฉ์ž๊ฐ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ณ  ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฐ€์ด๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค
  • ์–‘์‹์ด ๋”ฐ๋กœ ์ •ํ•ด์ ธ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์„ฑ ์š”์†Œ๋“ค์ด ์ถ”๊ฐ€๋˜์–ด ์žˆ์œผ๋ฉด ์ข‹๋‹ค
    • ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ : ํ”„๋กœ์ ํŠธ์˜ ๋ชฉ์ ๊ณผ ๋‚ด์šฉ์„ ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…. ์–ด๋–ค ํ”„๋กœ์ ํŠธ์ธ์ง€ ์†Œ๊ฐœํ•˜๊ณ  ์‚ฌ์šฉ๋œ ๊ธฐ์ˆ  ์Šคํƒ ๋ฐ ํ™˜๊ฒฝ
    • ์„ค์น˜ ๋ฐ ์‚ฌ์šฉ ๋ฐฉ๋ฒ• : ์‚ฌ์šฉํ•œ ์–ธ์–ด์™€ ๋ฒ„์ „, ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์ปค๋งจ๋“œ ๋˜๋Š” ์Šคํฌ๋ฆฝํŠธ
    • ๊ธฐ๋Šฅ ๋ฐ ์˜ˆ์‹œ : ํ”„๋กœ์ ํŠธ์— ํฌํ•จ๋œ ๋ชจ๋“ˆ์˜ ๊ธฐ๋Šฅ๊ณผ ๋Œ€ํ‘œ์ ์ธ ์„ค๋ช…, ์˜ˆ์‹œ. ์‹คํ–‰ ์ปค๋งจ๋“œ๋‚˜ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•
    • ๋ผ์ด์„ ์Šค ์ •๋ณด : ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์˜ ์‚ฌ์šฉ ๋ฒ”์œ„๋ฅผ ์•Œ๋ ค์คŒ (MIT, Apache, GPL, BSD)
    • ๊ธฐ์—ฌ ๋ฐฉ๋ฒ• : ์˜คํ”ˆ ์†Œ์Šค์ผ ๊ฒฝ์šฐ ์ค‘์š”. ํ”„๋กœ์ ํŠธ์— ๊ธฐ์—ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์•ˆ๋‚ด

 

 

https://logan-mle.notion.site/7-Readme-27ceda4576aa482297472338a2d755c0

 

7. Readme ์ž‘์„ฑํ•˜๊ธฐ | Notion

Github Repository์˜ ์–ผ๊ตด์ธ Readme๋ฅผ ์ž‘์„ฑํ•ด๋ณด๋Š” ์‹ค์Šต์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

logan-mle.notion.site

 

 

 

 

 

์‹ค์Šต ๊ฐ€์ด๋“œ ๋”ฐ๋ผ ์ญ‰ ์ง„ํ–‰ํ•˜๋ฉด ์œ„์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค

๋ฆฌ๋“œ๋ฏธ๋Š” ์›น์˜ ๊นƒํ—™์—์„œ๋„ ์ง์ ‘ ์ˆ˜์ • ๊ฐ€๋Šฅํ•˜๋‹ค

 

 

 

 


 

 

 

์ง€๊ธˆ๊นŒ์ง€ ๊นƒ ๊ด€๋ จ ๊ฐ•์˜ 2๊ฐœ๋ฅผ ์—ฐ๋‹ฌ์•„๋ณด๋ฉด์„œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ณต๋ถ€ ๋ฐ ์‹ค์Šต์„ ์ง„ํ–‰ํ•ด๋ณด์•˜๋‹ค

์•„๋ž˜ ๊ฐ•์˜๋กœ VSCode์—์„œ ๊นƒ์„ ๋‹ค๋ฃจ๋Š” ์ „๋ฐ˜์ ์ธ ๊ธฐ๋Šฅ์„ ํ™•์ธํ•˜์˜€๊ณ  ์ด๋ฒˆ ๊ฐ•์˜๋ฅผ ํ†ตํ•ด ์ง์ ‘ ์‹ค์Šตํ•ด๋ณด๋‹ˆ๊นŒ ์–ด๋ ดํ’‹์ด๋งŒ ์•Œ๊ณ  ์žˆ๋˜ ๊นƒ๊ณผ ๊นƒํ—ˆ๋ธŒ์— ๋Œ€ํ•ด ๋งŽ์ด ๋ฐฐ์šฐ๊ฒŒ ๋œ ์ข‹์€ ๊ธฐํšŒ์˜€๋‹ค

 

 

https://www.boostcourse.org/cs102

 

Github์œผ๋กœ ๋”ฐ๋ผํ•˜๋Š” ๋ฒ„์ „ ๊ด€๋ฆฌ

๋ถ€์ŠคํŠธ์ฝ”์Šค ๋ฌด๋ฃŒ ๊ฐ•์˜

www.boostcourse.org