Skip to main content

์›Œํฌํ”Œ๋กœ

ํŠธ๋ฆฌ๊ฑฐ, ๊ตฌ๋ฌธ, ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ์„ ํฌํ•จํ•˜์—ฌ GitHub Actions ์›Œํฌํ”Œ๋กœ์˜ ๊ฐœ๋žต์ ์ธ ๊ฐœ์š”๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

์›Œํฌํ”Œ๋กœ ์ •๋ณด

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

์›Œํฌํ”Œ๋กœ๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ .github/workflows ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ •์˜๋ฉ๋‹ˆ๋‹ค. ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฐ๊ฐ์˜ ๋‹ค๋ฅธ ์ž‘์—… ์ง‘ํ•ฉ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์—ฌ๋Ÿฌ ์›Œํฌํ”Œ๋กœ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋Œ์–ด์˜ค๊ธฐ ์š”์ฒญ์„ ๋นŒ๋“œํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฆด๋ฆฌ์Šค๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ๋งˆ๋‹ค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.
  • ์ƒˆ ๋ฌธ์ œ๊ฐ€ ๋ณด๊ณ ๋  ๋•Œ๋งˆ๋‹ค ๋ ˆ์ด๋ธ”์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์›Œํฌํ”Œ๋กœ ๊ธฐ๋ณธ ์‚ฌํ•ญ

์›Œํฌํ”Œ๋กœ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋ณธ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. ์›Œํฌํ”Œ๋กœ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ์ด๋ฒคํŠธ.
  2. ํ•˜๋‚˜ ์ด์ƒ์˜ _์ž‘์—…_์ด๋ฉฐ, ๊ฐ ์ž‘์—…์€ ์‹คํ–‰๊ธฐ ๋จธ์‹ ์—์„œ ์‹คํ–‰๋˜๊ณ  ์ผ๋ จ์˜ ํ•˜๋‚˜ ์ด์ƒ์˜ _๋‹จ๊ณ„_๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  3. ๊ฐ ๋‹จ๊ณ„์—์„œ๋Š” ์›Œํฌํ”Œ๋กœ๋ฅผ ๊ฐ„์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ™•์žฅ์ธ ์ž‘์—…์„ ์ •์˜ํ•˜๊ฑฐ๋‚˜ ์‹คํ–‰ํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ธฐ๋ณธ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๊ด€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ GitHub Actions ์ดํ•ด์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

Runner 1์ด ์ž‘์—… 1์„ ์‹คํ–‰ํ•˜๋„๋ก ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ์ด๋ฒคํŠธ ๋‹ค์ด์–ด๊ทธ๋žจ์œผ๋กœ, Runner 2๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜์—ฌ ์ž‘์—… 2๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์ž‘์—…์€ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค.

์›Œํฌํ”Œ๋กœ ํŠธ๋ฆฌ๊ฑฐ

์›Œํฌํ”Œ๋กœ ํŠธ๋ฆฌ๊ฑฐ๋Š” ์›Œํฌํ”Œ๋กœ๋ฅผ ์‹คํ–‰ํ•˜๊ฒŒ ํ•˜๋Š” ์ด๋ฒคํŠธ์ž…๋‹ˆ๋‹ค. ํ•ด๋‹น ์ด๋ฒคํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์›Œํฌํ”Œ๋กœ์˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ
  • GitHub ์™ธ๋ถ€์—์„œ ๋ฐœ์ƒํ•˜๊ณ  GitHub์—์„œ repository_dispatch ์ด๋ฒคํŠธ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ์ด๋ฒคํŠธ
  • ์˜ˆ์•ฝ๋œ ์‹œ๊ฐ„
  • ์„ค๋ช…์„œ

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

์›Œํฌํ”Œ๋กœ ํŠธ๋ฆฌ๊ฑฐ๋Š” on ํ‚ค๋กœ ์ •์˜๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ GitHub Actions์— ๋Œ€ํ•œ ์›Œํฌํ”Œ๋กœ ๊ตฌ๋ฌธ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

์›Œํฌํ”Œ๋กœ ์‹คํ–‰์„ ํŠธ๋ฆฌ๊ฑฐํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ์— ์—ฐ๊ฒฐ๋œ ์ปค๋ฐ‹ SHA ๋ฐ Git ์ฐธ์กฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. GitHub๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ .github/workflows ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ฃจํŠธ์—์„œ ์ด๋ฒคํŠธ์˜ ์—ฐ๊ฒฐ๋œ ์ปค๋ฐ‹ SHA ๋˜๋Š” Git ์ฐธ์กฐ์— ์žˆ๋Š” ์›Œํฌํ”Œ๋กœ ํŒŒ์ผ์„ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.
  3. on: ๊ฐ’์ด ํŠธ๋ฆฌ๊ฑฐ ์ด๋ฒคํŠธ์™€ ์ผ์น˜ํ•˜๋Š” ๋ชจ๋“  ์›Œํฌํ”Œ๋กœ์— ๋Œ€ํ•ด ์›Œํฌํ”Œ๋กœ ์‹คํ–‰์ด ํŠธ๋ฆฌ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ผ๋ถ€ ์ด๋ฒคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด ์›Œํฌํ”Œ๋กœ ํŒŒ์ผ์ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ๊ธฐ๋ณธ ๋ถ„๊ธฐ์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ ์›Œํฌํ”Œ๋กœ ์‹คํ–‰์€ ์ด๋ฒคํŠธ์˜ ์—ฐ๊ฒฐ๋œ ์ปค๋ฐ‹ SHA ๋˜๋Š” Git ์ฐธ์กฐ์— ์žˆ๋Š” ์›Œํฌํ”Œ๋กœ์˜ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์›Œํฌํ”Œ๋กœ๊ฐ€ ์‹คํ–‰๋˜๋ฉด GitHub๋Š” ์‹คํ–‰๊ธฐ ํ™˜๊ฒฝ์—์„œ GITHUB_SHA(์ปค๋ฐ‹ SHA) ๋ฐ GITHUB_REF(Git ์ฐธ์กฐ) ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ณ€์ˆ˜์— ์ •๋ณด ์ €์žฅ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์›Œํฌํ”Œ๋กœ ํŠธ๋ฆฌ๊ฑฐ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

๋‹ค์Œ ๋‹จ๊ณ„

์ฒซ ๋ฒˆ์งธ ์›Œํฌํ”Œ๋กœ๋ฅผ ๋นŒ๋“œํ•˜๋ ค๋ฉด ์˜ˆ์‹œ ์›Œํฌ๋กœ๋“œ ๋งŒ๋“ค๊ธฐ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.