๐ŸŽฌ Github Action์„ ๋งˆ์ผ“์— ๋“ฑ๋กํ•ด๋ณด์ž

Jung Han
Jung-han
Published in
9 min readApr 8, 2020

์ง€๋‚œ ๊ธ€์—์„œ๋Š” github actions๋ฅผ ์ด์šฉํ•ด workflow๋ฅผ ๋งŒ๋“œ๋Š” ๋ฒ•์„ ์†Œ๊ฐœํ–ˆ๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์€ Github Market place์— ๋“ฑ๋ก๋˜์–ด์žˆ๋Š” ์•ก์…˜๋“ค์ฒ˜๋Ÿผ ์‰ฝ๊ฒŒ ๊ฐ€์ ธ๋‹ค๊ฐ€ ์“ธ ์ˆ˜ ์žˆ๋Š” ์•ก์…˜์„ ๋งŒ๋“ค์–ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

๋งˆ์ผ“์— ๋“ฑ๋กํ•˜๋Š” ์•ก์…˜์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ๊ธฐ์กด workflow๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ๊ณผ๋Š” ๋ฐฉ๋ฒ•์ด ๋‹ค๋ฅด๋‹ค. ํ•˜๋‚˜์˜ ๋ฒ”์šฉ์ ์ธ step์ด๋‚˜ job์„ ๋งŒ๋“ ๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฝ”๋“œ์— ๋Œ€ํ•œ ์„ค๋ช…๋ณด๋‹ค๋Š” ์–ด๋–ค ๊ฒƒ๋“ค์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์œ„์ฃผ๋กœ ์†Œ๊ฐœํ•˜๊ฒ ๋‹ค.

๊ตณ์ด Action์„ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋‚˜?

๋งŒ์•ฝ ํ”„๋กœ์ ํŠธ๊ฐ€ ํ•˜๋‚˜๋ผ๋ฉด ์ง์ ‘ workflow์— ํฌํ•จํ•˜๋Š” ๊ฒƒ์ด ํ›จ~์”ฌ ๊ฐ„๋‹จํ•˜๊ธด ํ•˜๋‹ค. ํ•˜์ง€๋งŒ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์ €์žฅ์†Œ๊ฐ€ 50๊ฐœ 100๊ฐœ๋ผ๋ฉด ์ด์•ผ๊ธฐ๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค. TOAST UI์—์„œ ํ™•์ธ์ด ํ•„์š”ํ•œ ์ƒํ’ˆ๋“ค์˜ ๋ธŒ๋ผ์šฐ์ € ์ง€์› ๋ฒ”์œ„๋Š” ๋ชจ๋‘ ๋‹ค๋ฅด๊ณ  ์ฝ”๋“œ์— ์ˆ˜์ •์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ํ•˜๋ฉด ๋”์ฐํ•œ ์ผ์ด ๋ฒŒ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค. ์ตœ๋Œ€ํ•œ APP์—์„œ๋งŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์„ ์ œ์™ธํ•˜๊ณ  ์•ก์…˜ํ™”๋ฅผ ์‹œํ‚จ๋‹ค๋ฉด ํ•œ ์ €์žฅ์†Œ์—์„œ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ด์ง€๊ณ  ์‚ฌ์šฉ์ด ํ›จ์”ฌ ํŽธ๋ฆฌํ•ด์ง€๋ฆฌ๋ผ ์ƒ๊ฐํ•ด ์•ก์…˜์„ ๋งŒ๋“ค์—ˆ๋‹ค.

์‹œ์ž‘ํ•˜๊ธฐ ์ „์—, workflow + ํ™˜๊ฒฝ ์‚ดํŽด๋ณด๊ธฐ

์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๊ฐœ๋ฐœ ํ™˜๊ฒฝ๊ณผ workflow๋ฅผ ๋น ๋ฅด๊ฒŒ ์ ์–ด๋ณด๊ฒ ๋‹ค.

โœ”๏ธ Node.js๋ฅผ ํ™œ์šฉํ•  ๊ฒƒ์ด๋‹ค. ๋„์ปค๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• ๋˜ํ•œ ์กด์žฌํ•˜๋Š” ๊ฒƒ ๊ฐ™์œผ๋‹ˆ ํŽธํ•œ ๊ฒƒ์„ ์“ฐ์ž.
โœ”๏ธ TOAST UI doc์œผ๋กœ ์ƒ์„ฑ๋œ API ํŽ˜์ด์ง€๋“ค์ด ์—๋Ÿฌ์—†์ด ๋…ธ์ถœ๋˜๊ณ  ์žˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•  ๊ฒƒ์ด๋‹ค.
โœ”๏ธ ํ•˜๋ฃจ์— ํ•œ ๋ฒˆ ์ •๋„ Action์„ ํ™œ์„ฑํ™”ํ•  ๊ฒƒ์ด๋‹ค.
โœ”๏ธ tuidoc.config.js ๋ผ๋Š” TOAST UI Doc config ํŒŒ์ผ์„ ๋ณด๊ณ  url์„ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค.

์œ„ ํ™˜๊ฒฝ์„ ๊ณ ๋ คํ•ด์„œ workflow๋ฅผ ์ ์–ด๋ณด๋ฉด

1๏ธโƒฃ tuidoc.config.js๋ฅผ ์ฐธ๊ณ ํ•ด url์„ ์ƒ์„ฑํ•ด์ค€๋‹ค.
2๏ธโƒฃ url์„ ๊ธฐ์ค€์œผ๋กœ ์…€๋ ˆ๋‹ˆ์œฐ๊ณผ browserstack์„ ์ด์šฉํ•ด ๋ฐฉ๋ฌธํ•œ๋‹ค.
3๏ธโƒฃ ๊ฐ page๋ฅผ ๋ฐฉ๋ฌธํ•ด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
4๏ธโƒฃ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•˜๊ณ  ๋ฉ”์ผ๋กœ ๋ฆฌํฌํŒ…ํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ 2, 3๋ฒˆ์งธ ์Šคํ…์„ ๊ณตํ†ต ์•ก์…˜ํ™” ํ•  ๊ฒƒ์ด๋‹ค.

์•ก์…˜ ๋งŒ๋“ค๊ธฐ

์ฒ˜์Œ ์•ก์…˜์„ ๋งŒ๋“ค์–ด๋ณธ๋‹ค๋ฉด ์ด ํŠœํ† ๋ฆฌ์–ผ์„ ๋”ฐ๋ผ ํ•ด๋ณด๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค. ์ด ํŠœํ† ๋ฆฌ์–ผ ์ˆœ์„œ๋Œ€๋กœ ์ž‘์„ฑํ•ด๋ณด๊ฒ ๋‹ค.

์ €์žฅ์†Œ ํ™˜๊ฒฝ ๋งŒ๋“ค๊ธฐ

  1. ํŠœํ† ๋ฆฌ์–ผ์— ๋‚˜์˜จ ๊ฒƒ์ฒ˜๋Ÿผ node12 ๋ฒ„์ „์„ ์ด์šฉํ•ด npm init -y๋กœ ์ดˆ๊ธฐํ™”ํ–ˆ๋‹ค.
  2. ๋ฃจํŠธ ๊ฒฝ๋กœ์— ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋ช…์‹œํ•˜๋Š” ํŒŒ์ผ์ธ action.yml์„ ๋งŒ๋“ ๋‹ค. ์ด ๋งํฌ๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด ์–ด๋–ค ๊ฒƒ๋“ค์ด ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋กœ ๋“ค์–ด๊ฐ€๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
action.yml
  • name: ์•ก์…˜ ์ด๋ฆ„
  • description: ์•ก์…˜ ์„ค๋ช…
  • inputs: ์•ก์…˜์—์„œ ์‚ฌ์šฉ๋  ๋ณ€์ˆ˜ ๊ฐ’
    โ˜‘๏ธ default ๊ฐ’๊ณผ ๋ฐ˜๋“œ์‹œ ์žˆ์–ด์•ผ ํ•˜๋Š” ๊ฐ’์ธ์ง€, ์„ค๋ช…์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
    โ˜‘๏ธinputs์€ ๋ฐ˜๋“œ์‹œ ๋ฌธ์ž์—ด์ด์—ฌ์•ผ ํ•œ๋‹ค. ๋งŒ์•ฝ ๋ฐฐ์—ด๋กœ ๋„˜๊ธฐ๊ณ  ์‹ถ์€ ๊ฐ’์ด ์žˆ๋‹ค๋ฉด ๋ฌธ์ž์—ด๋กœ ์ž‘์„ฑํ•œ ๋’ค ์‚ฌ์šฉํ•˜๋Š” ๊ณณ์—์„œ ๋ถ„๋ฆฌํ•ด ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
    โ˜‘๏ธ๋งํฌ: https://help.github.com/en/actions/building-actions/metadata-syntax-for-github-actions#inputsinput_id
  • outputs: ์ถœ๋ ฅ๊ฐ’์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.
  • runs: ์ˆ˜ํ–‰๋˜๋Š” ํ™˜๊ฒฝ์„ ๋ช…์‹œํ•œ๋‹ค.
  • branding: ์ดํ›„์— ๋งˆ์ผ“์— ๋“ฑ๋กํ•  ๋•Œ ๋กœ๊ณ ๋‚˜, ์ƒ‰๊น”์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
    โ˜‘๏ธ์ƒ‰์€ white, yellow, blue, green, orange, red, purple, gray-dark ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.
    โ˜‘๏ธ๋กœ๊ณ ๋Š” https://feathericons.com/์— ๋“ฑ๋ก๋œ ์•„์ด์ฝ˜๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.

์ž…๋ ฅ, ์ถœ๋ ฅ, ์‹คํŒจ

์ž ๊น ์ด ์•ก์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ณณ์˜ workflow๋ฅผ ์ƒ์ƒํ•ด๋ณด์ž. ์šฐ๋ฆฌ๋Š” ์ด workflow๋ฅผ ์‹คํ–‰ํ•  ์•ก์…˜์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ๋‹ค.

uses๋กœ ์•ก์…˜์„ ๋ช…์‹œํ•˜๊ณ  with๋กœ ์•ก์…˜์—์„œ ์‚ฌ์šฉํ•  ๊ฐ’์„ ๋„˜๊ฒจ์ค„ ๊ฒƒ์ด๋‹ค. browserstack์—์„œ ์‚ฌ์šฉํ•  USERNAME๊ณผ ACCESS_KEY๋„ ์ €์žฅ์†Œ์—์„œ ๋„˜๊ฒจ์ค„ ๊ฒƒ์ด๋‹ค. ์ด์ œ ์ด๋ ‡๊ฒŒ ๋„˜๊ฒจ์ค€ ๊ฐ’๋“ค์€ ์–ด๋–ป๊ฒŒ ๋ฐ›์•„์„œ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด์ž.

main์— ์ž‘์„ฑํ•œ index.js์— ์•ก์…˜์—์„œ ์ˆ˜ํ–‰ํ•  ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค. ์•ก์…˜์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๊นƒํ—™์—์„œ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ toolkit์„ ์ œ๊ณตํ•œ๋‹ค. input, output, logging ๋“ฑ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ @action/core๋‚˜ cli๋กœ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” @actions/exec, ํ˜„์žฌ ์ˆ˜ํ–‰ ์ค‘์ธ ๊นƒํ—™์˜ ์ปจํ…์ŠคํŠธ์— ์ ‘๊ทผํ•˜๋Š” @actions/github๋“ฑ์„ ์ œ๊ณตํ•œ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋‹จ์ˆœํ•˜๊ฒŒ input๊ณผ ๋กœ๊น…์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— @actions/core๋งŒ ์‚ฌ์šฉํ–ˆ๋‹ค.

$ npm i @actions/core

๊ทธ๋Ÿผ workflow์—์„œ with๋ฅผ ํ†ตํ•ด ๋„˜๊ฒจ์ค„ ์ž…๋ ฅ๊ฐ’์„ ๋ฐ›์•„ ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉํ•ด๋ณด์ž. core์˜ getInput์„ ํ†ตํ•ด ์ž…๋ ฅ๊ฐ’์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฆ„์€ ์œ„ action.yml์—์„œ ์ž‘์„ฑํ•œ ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ์ถœ๋ ฅ๊ฐ’์€ setOutput์„ ํ†ตํ•ด ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

env๋กœ ๋„˜๊ฒจ์ค€ ๊ฐ’๋“ค์€ process.env๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

์ œ์ผ ์ค‘์š”ํ•œ ๊ฒƒ์€ setFailed๋‹ค. setFailed๋Š” ํ•ด๋‹น ์•ก์…˜์ด ์‹คํŒจํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ ค์ค€๋‹ค. ๋งŒ์•ฝ setFailed๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ํ•ด๋‹น ์Šคํ…์€ ์‹คํŒจํ–ˆ๋”๋ผ๋„ ํ†ต๊ณผํ•œ ๊ฒƒ์œผ๋กœ ๋…ธ์ถœ์ด ๋˜๋‹ˆ ๋ฐ˜๋“œ์‹œ ์ž‘์„ฑํ•ด์ค˜์•ผ ํ•œ๋‹ค.

์ด๊ฒŒ ์ „๋ถ€๋‹ค! ๊ฐ’๋“ค์„ ๋ฐ›์•„ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์‹คํŒจ ์กฐ๊ฑด์„ ๋ช…์‹œํ•ด์คฌ๋‹ค. ๊ทธ๋Ÿผ, ์ด ์•ก์…˜์„ ๋ฐฐํฌํ•ด๋ณด์ž.

zeit/ncc๋กœ ๋ฒˆ๋“ค๋ง ํ•ด์„œ ๋ฐฐํฌํ•˜๊ธฐ

ncc๋Š” ๋…ธ๋“œ๋กœ ์ž‘์„ฑ๋œ ํŒŒ์ผ์„ ์˜์กด๊นŒ์ง€ ํ•จ๊ป˜ ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ์ปดํŒŒ์ผ ํ•ด์ฃผ๋Š” CLI๋‹ค. ๋…ธ๋“œ ๋ชจ๋“ˆํŒŒ์ผ์„ ์ „๋ถ€ ์˜ฌ๋ฆฌ๋Š”๊ฑด ๋น„ํšจ์œจ์ ์ด๊ธฐ ๋–„๋ฌธ์— ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ–ˆ๋‹ค.

$ npm i -g @zeit/ncc
$ ncc build index.js

ncc๋ฅผ ์ด์šฉํ•˜์—ฌ ์ปดํŒŒ์ผ์„ ํ•˜๋ฉด ํ•˜๋‚˜์˜ index.js ํŒŒ์ผ์ด dist ๊ฒฝ๋กœ์— ์ƒ๊ฒผ๋‹ค. ๊ธฐ์กด์— action.yml์— ์ž‘์„ฑํ–ˆ๋˜ env.main๋ฅผ index.js ๋Œ€์‹  dist/index.js๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.

# config
runs:
using: 'node12'
main: 'dist/index.js'

๊ทธ๋Ÿผ ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ์„ ์ €์žฅ์†Œ์— ํ‘ธ์‹œํ•˜์ž. ์ด๋ ‡๊ฒŒ ๋  ๊ฒฝ์šฐ ๋ชจ๋“  ์ €์žฅ์†Œ์—์„œ ํ•ด๋‹น ์•ก์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ๋˜ํ•œ, git์— ํƒœ๊ทธ๋กœ ๋ฒ„์ „์„ ๋ช…์‹œํ•ด์ค€๋‹ค๋ฉด workflow์—์„œ ์•ก์…˜์„ ์‚ฌ์šฉํ•  ๋•Œ ๋ฒ„์ „๋ณ„๋กœ ์„ ํƒํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

$ git tag v1.0.0
$ git push origin v1.0.0

์‚ฌ์šฉํ•˜๊ธฐ

workflow์—์„œ ์ƒ์„ฑํ•œ ์ €์žฅ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋ฉด ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋งŒ์•ฝ jung-han ๊ณ„์ •์— browserstack-actions๋ผ๋Š” ์ €์žฅ์†Œ๋ผ๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. @๋’ค์— ๋ฒ„์ „์„ ๋ช…์‹œํ•ด ๋ฒ„์ „๋ณ„๋กœ ์„ ํƒํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

marketplace์— ๋“ฑ๋กํ•˜๊ธฐ

์ž‘์—…์ด ๋๋‚ฌ๋‹ค๋ฉด ์œ„ ์ด๋ฏธ์ง€๊ฐ€ ์ €์žฅ์†Œ์—์„œ ๋ณด์ผ ๊ฒƒ์ด๋‹ค.๋งˆ์ผ“์— ๋“ฑ๋กํ•  ๋•Œ ํ•„์š”ํ•œ ์ž‘์—…์ด ์žˆ๋‹ค. ๋งํฌ์— ๋“ค์–ด๊ฐ€ ํ™•์ธํ•ด๋„ ์ข‹๋‹ค.

  1. ๊ณ„์ •์„ two-factor authentification ๋“ฑ๋กํ•ด์•ผ ํ•œ๋‹ค. ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ๋“ฑ๋กํ•˜์ž
  2. ๋ฉ”ํƒ€ ์ •๋ณด์— ํ•„์š”ํ•œ ๊ฐ’๋“ค์„ ์ „๋ถ€ ๋“ฑ๋กํ•ด์•ผ ํ•œ๋‹ค. name, description, icon, color๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
  3. README.md ๋˜ํ•œ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.

4. ์นดํ…Œ๊ณ ๋ฆฌ์™€ ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•ด์ฃผ๋ฉด ๋์ด๋‹ค.

5. ์™„๋ฃŒ๊ฐ€ ๋˜๋ฉด release์—์„œ marketplace ๋”ฑ์ง€๊ฐ€ ์ƒ๊ธด๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

6. ๋งˆ์ผ“์— ๋“ค์–ด๊ฐ€๋ณด๋ฉด ์„ฑ๊ณต์ ์œผ๋กœ ๋“ฑ๋ก๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋

์•ก์…˜์„ ๋งŒ๋“ค์–ด์„œ IE8 ๋ถ€ํ„ฐ edge, safari ๋“ฑ๋“ฑ ์—ฌ๋Ÿฌ ๋ธŒ๋ผ์šฐ์ €์˜ ์—๋Ÿฌ ์ฒดํ‚น์„ ์ž๋™ํ™”ํ–ˆ๋‹ค. ์ฝ์–ด๋ณด๋ฉด ์•Œ๊ฒ ์ง€๋งŒ ์‚ฌ์‹ค ์•ก์…˜์„ ๋งŒ๋“ค๊ณ  ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ต์ง€ ์•Š๋‹ค. (๋” ํšจ์œจ์ ์œผ๋กœ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์„ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค) ๊ธ€์—์„œ ์ž˜๋ชป๋œ ๋‚ด์šฉ์ด ์žˆ๋‹ค๋ฉด ์–ธ์ œ๋“ ์ง€ ๋Œ“๊ธ€ ๋ฐ”๋ž€๋‹ค!๐Ÿ™†โ€โ™‚๏ธ

์ถ”๊ฐ€๋กœ ์•Œ๋ฉด ์ข‹์€ ๊ฒƒ๋“ค

needs, if

workflow์—์„œ ํ•ด๋‹น job์ด ์‹คํ–‰์ด ๋˜์–ด์•ผ ํ• ์ง€ ๋ง์ง€ ๋ถ„๊ธฐ๋ฌธ์œผ๋กœ ๊ฒฐ์ • ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ์ด์ „ ์ž‘์—…์ด ๋ฐ˜๋“œ์‹œ ์„ฑ๊ณต์ ์œผ๋กœ ๋๋‚˜์•ผ๋งŒ ์ง„ํ–‰์ด ๋˜์–ด์•ผ ํ•˜๋Š” job ๋“ค๋„ ์žˆ๋‹ค.
๊ทธ๋Ÿด๋•Œ if๋‚˜ needs๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋œ๋‹ค.

artifact

artifact๋Š” ์›Œํฌ ํ”Œ๋กœ์šฐ ์‹คํ–‰ ์ค‘์— ์ƒ์„ฑ๋œ ํŒŒ์ผ์„ ์˜๋ฏธํ•œ๋‹ค. artifact๋ฅผ ์ด์šฉํ•˜๋ฉด ์ž‘์—…์ด ๋๋‚œ ๋’ค์—๋„ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ์ด์šฉํ•˜๋ฉด workflow๋™์•ˆ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค. actions/upload-artifact ์•ก์…˜์„ ํ†ตํ•ด artifact๋ฅผ ์—…๋กœ๋“œ ํ•  ์ˆ˜ ์žˆ๊ณ  actions/download-artifact๋กœ ๋‹ค์šด๋ฐ›์•„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ report๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๊ฒฐ๊ณผ๋ฅผ ์—…๋กœ๋“œํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์— ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

env์— ๊ฐ’ ์„ธํŒ…ํ•˜๊ธฐ

url์„ ๋งŒ๋“œ๋Š” ํ•จ์ˆ˜๋ฅผ ์ˆ˜ํ–‰ํ•œ ๋’ค ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์Œ workflow์— ์‚ฌ์šฉํ–ˆ์–ด์•ผ ํ–ˆ๋‹ค. ์ด ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ดค์ง€๋งŒ ์ฐพ์ง€ ๋ชปํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ฒฐ๊ณผ๋กœ ๋งŒ๋“  url.txt๋ฅผ ์‰˜๋กœ ์ฝ์€ ๋’ค env์— ํ• ๋‹นํ•œ ๋’ค ๊บผ๋‚ด ์ผ๋‹ค. ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ๊ถ๊ธˆํ•˜๋‹ค๋ฉด ๋งํฌ๋ฅผ ๋“ค์–ด๊ฐ€ ๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค. ์ด์— ๊ด€ํ•œ ์ด์•ผ๊ธฐ๊ฐ€ ์žˆ๋‹ค.

--

--

Jung Han
Jung-han
Editor for

๊ฐœ์ธ์šฉ ๋ธ”๋กœ๊ทธ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ข‹์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฟˆ์ž…๋‹ˆ๋‹ค. > https://www.notion.so/Han-Jung-c43f4bcd2b3f4b3d85b93aee41c5e098