Skip to main content

์›Œํฌํ”Œ๋กœ ์ˆ˜๋™ ์‹คํ–‰

์›Œํฌํ”Œ๋กœ๊ฐ€ workflow_dispatch ์ด๋ฒคํŠธ์—์„œ ์‹คํ–‰๋˜๋„๋ก ๊ตฌ์„ฑ๋œ ๊ฒฝ์šฐ GitHub, GitHub CLI ๋˜๋Š” REST API์˜ ์ž‘์—… ํƒญ์„ ์‚ฌ์šฉํ•˜์—ฌ ์›Œํฌํ”Œ๋กœ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Tool navigation

์ˆ˜๋™์œผ๋กœ ์‹คํ–‰ํ•˜๋„๋ก ์›Œํฌํ”Œ๋กœ ๊ตฌ์„ฑ

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

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

ํ•ด๋‹น ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ์“ฐ๊ธฐ ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์›Œํฌํ”Œ๋กœ ์‹คํ–‰

  1. GitHub์—์„œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ๊ธฐ๋ณธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

  2. ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ด๋ฆ„ ์•„๋ž˜์—์„œ ์ž‘์—…์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    "github/docs" ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ํƒญ ์Šคํฌ๋ฆฐ์ƒท. "์ž‘์—…" ํƒญ์€ ์ฃผํ™ฉ์ƒ‰ ์œค๊ณฝ์„ ์œผ๋กœ ๊ฐ•์กฐ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  3. ์™ผ์ชฝ ์‚ฌ์ด๋“œ๋ฐ”์—์„œ ์‹คํ–‰ํ•  ์›Œํฌํ”Œ๋กœ ์ด๋ฆ„์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    "๋™์ž‘(Actions)" ํŽ˜์ด์ง€ ์Šคํฌ๋ฆฐ์ƒท. ์™ผ์ชฝ ์‚ฌ์ด๋“œ๋ฐ”์—์„œ ์›Œํฌํ”Œ๋กœ ์ด๋ฆ„์€ ์ง„ํ•œ ์ฃผํ™ฉ์ƒ‰ ์œค๊ณฝ์„ ์œผ๋กœ ๊ฐ•์กฐ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  4. ์›Œํฌํ”Œ๋กœ ์‹คํ–‰ ๋ชฉ๋ก ์œ„์—์„œ ์›Œํฌํ”Œ๋กœ ์‹คํ–‰ ๋‹จ์ถ”๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ์ฐธ๊ณ  ํ•ญ๋ชฉ

    ์›Œํฌํ”Œ๋กœ ์‹คํ–‰ ๋‹จ์ถ”๋ฅผ ๋ณด๋ ค๋ฉด ์›Œํฌํ”Œ๋กœ ํŒŒ์ผ์ด workflow_dispatch ์ด๋ฒคํŠธ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. workflow_dispatch ์ด๋ฒคํŠธ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์›Œํฌํ”Œ๋กœ ํŒŒ์ผ๋งŒ ์›Œํฌํ”Œ๋กœ ์‹คํ–‰ ๋‹จ์ถ”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›Œํฌํ”Œ๋กœ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. workflow_dispatch ์ด๋ฒคํŠธ ๊ตฌ์„ฑ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์›Œํฌํ”Œ๋กœ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ์ด๋ฒคํŠธ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

    ์›Œํฌํ”Œ๋กœ ํŽ˜์ด์ง€์˜ ์Šคํฌ๋ฆฐ์ƒท. ์›Œํฌํ”Œ๋กœ ์‹คํ–‰ ๋ชฉ๋ก ์œ„์—๋Š” "์›Œํฌํ”Œ๋กœ ์‹คํ–‰"์ด๋ผ๋Š” ๋ ˆ์ด๋ธ”์ด ์ง€์ •๋œ ๋‹จ์ถ”๊ฐ€ ์ง„ํ•œ ์ฃผํ™ฉ์ƒ‰์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  5. ๋ถ„๊ธฐ ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด๋ฅผ ์„ ํƒํ•˜๊ณ  ๋ถ„๊ธฐ๋ฅผ ํด๋ฆญํ•˜์—ฌ ์›Œํฌํ”Œ๋กœ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  6. ์›Œํฌํ”Œ๋กœ์— ์ž…๋ ฅ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํ•„๋“œ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

  7. ์›Œํฌํ”Œ๋กœ ์‹คํ–‰์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ  ํ•ญ๋ชฉ

GitHub CLI์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ GitHub CLI ์ •๋ณด์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

์›Œํฌํ”Œ๋กœ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด workflow run ํ•˜์œ„ ๋ช…๋ น์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. workflow ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์‹คํ–‰ํ•  ์›Œํฌํ”Œ๋กœ์˜ ์ด๋ฆ„, ID ๋˜๋Š” ํŒŒ์ผ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด "Link Checker", 1234567 ๋˜๋Š” "link-check-test.yml"์ž…๋‹ˆ๋‹ค. ์›Œํฌํ”Œ๋กœ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด GitHub CLI์—์„œ ์›Œํฌํ”Œ๋กœ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€ํ™”ํ˜• ๋ฉ”๋‰ด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

gh workflow run WORKFLOW

์›Œํฌํ”Œ๋กœ์—์„œ ์ž…๋ ฅ์„ ์ˆ˜๋ฝํ•˜๋ฉด GitHub CLI์—์„œ ์ž…๋ ฅํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๋˜๋Š” -f ๋˜๋Š” -F๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ key=value ํ˜•์‹์— ์ž…๋ ฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. -F๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์—์„œ ์ฝ์Šต๋‹ˆ๋‹ค.

gh workflow run greet.yml -f name=mona -f greeting=hello -F data=@myfile.txt

ํ‘œ์ค€ ์ž…๋ ฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž…๋ ฅ์„ JSON์œผ๋กœ ์ „๋‹ฌํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

echo '{"name":"mona", "greeting":"hello"}' | gh workflow run greet.yml --json

๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ๊ธฐ๋ณธ ๋ถ„๊ธฐ๊ฐ€ ์•„๋‹Œ ๋ถ„๊ธฐ์—์„œ ์›Œํฌํ”Œ๋กœ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด --ref ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

gh workflow run WORKFLOW --ref BRANCH

์›Œํฌํ”Œ๋กœ ์‹คํ–‰์˜ ์ง„ํ–‰๋ฅ ์„ ๋ณด๋ ค๋ฉด run watch ํ•˜์œ„ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๊ณ  ๋Œ€ํ™”ํ˜• ๋ชฉ๋ก์—์„œ ์‹คํ–‰์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

gh run watch

REST API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›Œํฌํ”Œ๋กœ ์‹คํ–‰

REST API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ inputs์™€ ref๋ฅผ ์š”์ฒญ ๋ณธ๋ฌธ ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ž…๋ ฅ์„ ์ƒ๋žตํ•˜๋ฉด ์›Œํฌํ”Œ๋กœ ํŒŒ์ผ์— ์ •์˜๋œ ๊ธฐ๋ณธ๊ฐ’์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ  ํ•ญ๋ชฉ

workflow_dispatch ์ด๋ฒคํŠธ์— ๋Œ€ํ•ด ์ตœ๋Œ€ 10๊ฐœ์˜ inputs๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

REST API ์‚ฌ์šฉ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๋Š” ์›Œํฌํ”Œ๋กœ์— ๋Œ€ํ•œ REST API ์—”๋“œํฌ์ธํŠธ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.