๐Ÿ˜ˆGit hub Action(CI)

๋ฐ•ํ˜•์„ยท2022๋…„ 4์›” 4์ผ
0
post-custom-banner

๐Ÿ˜ˆgit hub action

Github Actions๋Š” Github Repository์™€ ์—ฐ๋™๋˜์–ด ์†Œํ”„ํŠธ์›จ์–ด ๋นŒ๋“œ, ํ…Œ์ŠคํŠธ, ๊ทธ๋ฆฌ๊ณ  ๋ฐฐํฌ๊นŒ์ง€ ์ž๋™ํ™” ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•๋ ฅํ•œ CI/CD ๋„๊ตฌ์ด๋‹ค.

๊นƒํ—™์˜ ์žฅ์ 

  • ๋ณ„๋‹ค๋ฅธ ์„ค์น˜์—†์ด ๊ฐ„๋‹จํ•˜๊ฒŒ Github๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋”ฐ๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.
  • ์›Œํฌ ํ”Œ๋กœ์šฐ ๋ณต์ œ ์šฉ์ด
  • ๋ผ์ด๋ธŒ๋กœ๊ทธ
  • ์—ฌ๋Ÿฌ ์šด์˜์ฒด์ œ ๋ฐ ๋Ÿฐํƒ€์ž„ ๋ฒ„์ „์—์„œ ๋™์‹œ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ
  • ๋ชจ๋“  ์–ธ์–ด ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋นŒ๋“œ, ํ…Œ์ŠคํŠธ ๋ฐ ๋ฐฐํฌ

Jenkins ์™€ Github Action์˜ ์ฐจ์ด์ 

JankinsGithub Action
์„œ๋ฒ„ ์„ค์น˜ ํ•„์š”ํด๋ผ์šฐ๋“œ๋ฅผ ์ด์šฉํ•œ ์„œ๋น„์Šค
์ œํ’ˆ์„ ์‹œ์žฅ์— ๋ฐฐํฌํ•˜๋Š” ๋ฐ ๋” ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ์š”๋น„๋™๊ธฐ CI/CD ๋‹ฌ์„ฑ
๊ณ„์ • ๋ฐ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ ๊นƒํ—ˆ๋ธŒ ์ด๋ฒคํŠธ๋ฅผ ์ค€์ˆ˜ํ•˜์ง€ ์•Š๋Š” ๋นŒ๋“œ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ํ•จ๋ชจ๋“  ๊นƒํ—ˆ๋ธŒ ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ์ž‘์—…์„ ์ œ๊ณตํ•˜๊ณ  ๋‹ค์–‘ํ•œ ์–ธ์–ด์™€ ํ”„๋ ˆ์ž„ ์›Œํฌ๋ฅผ ์ง€์›ํ•จ
ํ™˜๊ฒฝ ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด ๋„์ปค ์ด๋ฏธ์ง€์—์„œ ์‹คํ–‰ํ•ด์•ผ ํ•จ๋ชจ๋“  ํ™˜๊ฒฝ๊ณผ ํ˜ธํ™˜
์บ์‹ฑ ๋งค์ปค๋‹ˆ์ฆ˜์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ์บ์‹ฑ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ž์ฒด ์บ์‹ฑ ๋งค์ปค๋‹ˆ์ฆ˜์„ ์ž‘์„ฑํ•ด์•ผํ•จ
๊ณต์œ ๊ธฐ๋Šฅ ์—†์Œ๊นƒํ—™ ๋งˆ์ผ“ ํ”Œ๋ ˆ์ด์Šค๋ฅผ ํ†ตํ•ด ๊ณต์œ ๊ฐ€๋Šฅ
์ „์„ธ๊ณ„์— ๋งŽ์€ ์ด์šฉ์ž๋กœ ์ธํ•ด ๋ฌธ์„œ๊ฐ€ ๋‹ค์–‘ํ•จ์  ํ‚จ์Šค์— ๋น„ํ•ด ๋ฌธ์„œ๊ฐ€ ์—†์Œ

์  ํ‚จ์Šค๋Š” ๋ฌด๋ฃŒ์ด๊ณ  ๋‹ค์–‘ํ•œ IDE๋ฅผ ์ง€์›ํ•˜๊ณ  ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์ด ๋‹ค์–‘ํ•˜๋‹ค.
ํ•˜์ง€๋งŒ ํ˜ธ์ŠคํŒ…์„ ํ•˜๋‚˜๋ถ€ํ„ฐ ์—ด๊นŒ์ง€ ๋ชจ๋‘ ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์„œ๊ด€๋ฆฌ ๋น„์šฉ์ด ๋ฐœ์ƒํ•œ๋‹ค.

๊นƒํ—ˆ๋ธŒ ์•ก์…˜์€ ๊นƒ์ด ์ œ๊ณตํ•˜๋Š” ์™„์ „ ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค ์ด๋ฏ€๋กœ ์ธํ”„๋ผ๋ฅผ ํ™•์žฅํ•˜๊ณ  ์šด์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ ํ•„์š”๊ฐ€ ์—†๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‰ฝ๊ณ  ํด๋ผ์šฐ๋“œ์—์„œ ์ž‘๋™ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ฒ˜๋ฆฌ๋Ÿ‰์ด ๋งŽ์•„์ง€๋ฉด ๋น„์šฉ๋„ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ์ ์ด ์žˆ๋‹ค.

ํ•œ๋งˆ๋””๋กœ ๊ท€์ฐฎ์ง€๋งŒ ์„ธ์„ธํ•œ ์„ค์ •์ด ๊ฐ€๋Šฅํ•˜๊ณ  ๋ฌด๋ฃŒ์ธ ์„œ๋น„์Šค๋Š” ์  ํ‚จ์Šค๊ณ 

์‰ฝ๊ณ  ๊ฐ„ํŽธํ•˜์ง€๋งŒ ์œ ๋ฃŒ์ธ ๊นƒํ—ˆ๋ธŒ ์•ก์…˜์€ ์„œ๋กœ ์ƒ๋ฐ˜๋˜๋Š” ์ฐจ์ด์ ์ด ์žˆ๋‹ค.

๐Ÿ“Œ์ง€์†์  ํ†ตํ•ฉ

Martin Fowler ์ด ์ œ์‹œํ•œ ์ง€์†์  ํ†ตํ•ฉ์˜ ์›์น™

  1. ๋‹จ์ผ ์†Œ์Šค ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค.
    ํ”„๋กœ์ ํŠธ์—์„œ ์ œํ’ˆ์„ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•ด ํ•จ๊ป˜ ์กฐ์ •ํ•ด์•ผ ํ•˜๋Š” ์ˆ˜ ๋งŽ์€ ํŒŒ์ผ์„ ํฌํ•จ๋˜์–ด์•ผ ํ•˜๋Š”๋ฐ ๋‹จ์ผ ์†Œ์Šค ๋ ˆํฌ์ง€ํ† ๋ฆฌ๊ฐ€ ์•„๋‹Œ ๊ณณ์— ๋ฟ”๋ฟ”์ด ํฉ์–ด์ ธ ์žˆ๋‹ค๋ฉด ์ถ”์ ํ•˜๋Š” ๊ฒƒ์ด ๊ต‰์žฅํžˆ ํž˜๋“ค์–ด์งˆ ๊ฒƒ์ด๋‹ค.

  2. ๋นŒ๋“œ๋ฅผ ์ž๋™ํ™” ํ•ด์•ผํ•œ๋‹ค.
    ๋นŒ๋“œ๊ฐ€ ์ˆ˜๋™์œผ๋กœ ์ง„ํ–‰๋˜๋ฉด ์ˆ˜ ๋งŽ์€ ์‹ค์ˆ˜๊ฐ€ ๋ฐœ์ƒํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ผ์ผ์ด ์ˆ˜๋™์œผ๋กœ ๋นŒ๋“œ๋ฅผ ํ•˜๋Š” ๊ฒƒ์€ ์‹œ๊ฐ„ ๋‚ญ๋น„์ด๋‹ค.

  3. ์…€ํ”„ ํ…Œ์ŠคํŒ… ๋นŒ๋“œ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.
    ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์— ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ๋ฅผ ํฌํ•จ ํ•จ์œผ๋กœ์จ ๋ฒ„๊ทธ๋ฅผ ๋” ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์œผ๋กœ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  4. ๋งค์ผ ๋ฉ”์ธ๋ผ์ธ์— ์ปค๋ฐ‹์„ ํ•ด์•ผํ•œ๋‹ค.
    ๊ฐ์ž์˜ ์ง„ํ–‰ ์ƒํ™ฉ์„ ์ถ”์ ํ•˜๋Š”๋ฐ ๋„์›€์ด ๋œ๋‹ค.
    ์งง์€ ์ฃผ๊ธฐ๋กœ ์ปค๋ฐ‹์„ ํ•˜๋ฏ€๋กœ, ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•œ ํ›„ ๋น ๋ฅด๊ฒŒ ์ถฉ๋Œ์ƒํ™ฉ์„ ๊ฐ์ง€ ํ•  ์ˆ˜ ์žˆ๊ณ  ๊ทธ๋•Œ๊ทธ๋•Œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ๋‹ค.

  5. ๋ชจ๋“  ํŒ€์›์ด ๋ฌด์Šจ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ์•„์•ผ ํ•œ๋‹ค.
    ์ง€์†์  ํ†ตํ•ฉ์€ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์— ๊ด€ํ•œ ๊ฒƒ์ด๋ฏ€๋กœ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์‹œ์Šคํ…œ ์ƒํƒœ์™€ ์‹œ์Šคํ…œ์— ์ ์šฉ๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์‰ฝ๊ฒŒ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

๊นƒํ—™ ์•ก์…˜ ๊ณต์‹๋ฌธ์„œ

๊นƒํ—™ ์•ก์…˜์€ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— push๋‚˜ pull request๊ฐ€ ์‹คํ–‰๋ ๋•Œ ๊นƒํ—™ ์•ก์…˜์ด ํŠธ๋ฆฌ๊ฑฐ ๋œ๋‹ค.
๊นƒํ—™ ์•ก์…˜์€ workflow ํŒŒ์ผ๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๊ณ  action์„ ์ •์˜ํ•˜์—ฌ ์‹คํ–‰ ํ•  ์ˆ˜ ์žˆ๋‹ค.

workflow

workflow๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž๋™์ ์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๊ตฌ์„ฑ ํ•  ์ˆ˜ ์žˆ๋‹ค. workflow๋Š” ์ž์‹ ์˜ ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์•ˆ์— ์žˆ๋Š” ymlํŒŒ์ผ์— ์˜ํ•ด ์ •์˜๋œ๋‹ค.

์—ฌ๋ ค๊ฐœ์˜ ymlํŒŒ์ผ์„ ํ•˜๋‚˜์˜ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ณ , ๊ฐ๊ฐ ๋‹ค๋ฅธ ๋‹ค๋ฅธ ๋‹จ๊ณ„์˜ ์„ธํŠธ๋ฅผ ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

Events

์ด๋ฒคํŠธ๋Š” workflow ์‹คํ–‰์„ ํŠธ๋ฆฌ๊ฑฐ ํ•˜๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ํŠน์ • ํ™œ๋™์ด๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๊นƒํ—ˆ๋ธŒ๋ฅผ ํ†ตํ•ด pull request๋ฅผ ํ•˜๊ฑฐ๋‚˜ push๋ฅผ ํ•˜๋ฉด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

Jobs

job์€ workflow ์•ˆ์— ๊ฐ™์€ runner๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋‹จ๊ณ„์˜ ๋ชจ์Œ์ด๋‹ค. ๊ฐ๊ฐ์˜ ๋‹จ๊ณ„๋Š” ์‹คํ–‰๋  ์‰˜ ์Šคํฌ๋ฆฝํŠธ์ด๊ฑฐ๋‚˜, ์‹คํ–‰๋  ์•ก์…˜์ด๋‹ค. ๋‹จ๊ณ„๋Š” ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰๋˜๊ณ  ๊ฐ๊ฐ ๋…๋ฆฝ์ ์ด๋‹ค.

profile
Better Than Yesterday
post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€