Skip to content

picbuddy/MyActions

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

21 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Progressive Metrics โ€” GitHub Pages + Actions

'src/metrics.py'์— ํ†ต๊ณ„ ํ•จ์ˆ˜๋ฅผ ํ•˜๋‚˜์”ฉ ์ถ”๊ฐ€ํ•˜๊ณ  pushํ•˜๋ฉด, CI(๋ฌธ๋ฒ•/ํ…Œ์ŠคํŠธ) ํ›„ CD๊ฐ€ HTML์„ ๋‹ค์‹œ ์ƒ์„ฑํ•ด Pages์— ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

tools/build_site.py๋Š” **์ด๋ฒˆ ์˜ˆ์ œ์˜ ํ•ต์‹ฌ โ€œ์ž๋™ํ™” ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธโ€**์ž…๋‹ˆ๋‹ค. GitHub Actions์—์„œ ๋ฐฐํฌ ๋‹จ๊ณ„(CD) ๋•Œ ํ˜ธ์ถœ๋˜์–ด ์‹ค์ œ๋กœ Pages์— ์˜ฌ๋ผ๊ฐˆ HTML์„ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

์—ญํ•  ์š”์•ฝ

๋‹จ๊ณ„ ๋™์ž‘

  1. CSV ์ฝ๊ธฐ data/ ์•ˆ์˜ CSV ํŒŒ์ผ๋“ค์„ ์Šค์บ”ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•ฉ๋‹ˆ๋‹ค.
  2. ํ†ต๊ณ„ ๊ณ„์‚ฐ src/metrics.py์— ์žˆ๋Š” ํ•จ์ˆ˜๋“ค์„ ๋™์ ์œผ๋กœ ๋ถˆ๋Ÿฌ์™€ ๊ฐ CSV์˜ ํ†ต๊ณ„๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.
  3. HTML ์ƒ์„ฑ docs/index.template.html์˜ ์ž๋ฆฌํ‘œ์‹œ์ž({{TABLES}}, {{UPDATED_AT}})๋ฅผ ์‹ค์ œ ๊ฐ’์œผ๋กœ ์น˜ํ™˜ํ•ด site/index.html์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  4. Pages๋กœ ๋ฐฐํฌ GitHub Actions์˜ upload-pages-artifact๊ฐ€ ์ด site/ ํด๋”๋ฅผ ๊ฐ€์ ธ๊ฐ€ GitHub Pages๋กœ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰ CI๋Š” ์ฝ”๋“œ ํ’ˆ์งˆ ํ™•์ธ, build_site.py๋Š” CD์˜ ๋นŒ๋“œ ๋‹จ๊ณ„๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์™œ ํ•„์š”ํ•œ๊ฐ€?

GitHub Pages๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ •์  ํŒŒ์ผ์„ ์˜ฌ๋ฆฌ๋Š” ๊ณต๊ฐ„์ด๊ธฐ ๋•Œ๋ฌธ์—, CSV ๋ฐ์ดํ„ฐ๋‚˜ Python ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ๋Ÿฐํƒ€์ž„์— ์„œ๋ฒ„์—์„œ ๋™์ ์œผ๋กœ ๋ณด์—ฌ์ค„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ Actions๊ฐ€ ๋นŒ๋“œ ์‹œ์ ์— Python์„ ์‹คํ–‰ํ•ด HTML์„ ์ƒ์„ฑํ•ด ๋‘๊ณ , ๊ทธ๊ฑธ Pages์— ์˜ฌ๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ โ€œ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธโ€๊ฐ€ ์—†์œผ๋ฉด, CSV๋ฅผ ๋ฐ”๊ฟ”๋„ Pages์—๋Š” ์ž๋™ ๋ฐ˜์˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์ •์  ํŒŒ์ผ ๊ทธ๋Œ€๋กœ ๋ฐฐํฌ).

๊ฒฐ๋ก 

tools/build_site.py๋Š” ํ•„์ˆ˜์ ์ธ ์ž๋™ํ™” ๋„๊ตฌ๋กœ์„œ, **โ€œ์ฝ”๋“œ/๋ฐ์ดํ„ฐ ์ˆ˜์ • โ†’ CI/CD โ†’ Pages ๋ฐ˜์˜โ€**์˜ ์ „์ฒด ์ฒด์ธ์„ ๊ฒฝํ—˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ค๋‹ˆ๋‹ค. CSV๋‚˜ ์ฝ”๋“œ โ†’ CI/CD โ†’ ์ž๋™ HTML ์ƒ์„ฑ โ†’ Pages ๋ฐฐํฌ

pages-ci-cd.yml์€ GitHub Actions ์›Œํฌํ”Œ๋กœ์šฐ ํŒŒ์ผ์ด์—์š”.

GitHub๋Š” .github/workflows/ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ๋Š” YAML ํŒŒ์ผ๋“ค์„ ์ž๋™์œผ๋กœ ์ฝ์–ด ์›Œํฌํ”Œ๋กœ์šฐ๋กœ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.

์ž‘์„ฑ/์ˆ˜์ • ๋ฐฉ๋ฒ•

  1. ๋กœ์ปฌ์—์„œ ์ž‘์„ฑ โ†’ git add . โ†’ git push
  2. GitHub ์›น UI์—์„œ ์ž‘์„ฑ/์ˆ˜์ • ๋ฆฌํฌ์ง€ํ† ๋ฆฌ โ†’ Actions ํƒญ New workflow ํด๋ฆญ(๋˜๋Š” ๊ธฐ์กด ์›Œํฌํ”Œ๋กœ์šฐ ์„ ํƒ ํ›„ Edit) .github/workflows/pages-ci-cd.yml ํŒŒ์ผ ๋‚ด์šฉ ๋ถ™์—ฌ๋„ฃ๊ธฐ/์ˆ˜์ • Commit changes ํด๋ฆญ

Github Pages setting

  • ๋ฆฌํฌ์ง€ํ† ๋ฆฌ Settings ํƒญ ํด๋ฆญ
  • ์™ผ์ชฝ ๋ฉ”๋‰ด์—์„œ Pages ํด๋ฆญ
  • Build and deployment ์„น์…˜ ํ™•์ธ
  • Source๋ฅผ **โ€œDeploy from a branchโ€**๊ฐ€ ์•„๋‹ˆ๋ผ **โ€œGitHub Actionsโ€**์œผ๋กœ ์„ ํƒ

์ด๋ ‡๊ฒŒ ํ•ด ๋‘๋ฉด Actions์—์„œ deploy-pages@v4๊ฐ€ ์‹คํ–‰๋  ๋•Œ Pages๊ฐ€ ์ž๋™์œผ๋กœ ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค. Tip: ์ƒˆ ๋ฆฌํฌ๋ผ๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ โ€œGitHub Actionsโ€ ๋ชจ๋“œ๊ฐ€ ๋น„ํ™œ์„ฑ์ผ ์ˆ˜ ์žˆ์–ด์š”. ๋ฐ˜๋“œ์‹œ ํ™•์ธํ•˜๊ณ  ๋ณ€๊ฒฝํ•ด ์ฃผ์„ธ์š”.

์›Œํฌํ”Œ๋กœ์šฐ๊ฐ€ ํ•˜๋Š” ์ผ

์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ์›Œํฌํ”Œ๋กœ์šฐ๋Š” CI ๊ฒ€์‚ฌ(ci job) โ†’ mkdocs build๋‚˜ build_site.py ๊ฐ™์€ ๋นŒ๋“œ โ†’ actions/upload-pages-artifact๋กœ Pages์šฉ ์‚ฐ์ถœ๋ฌผ์„ ์—…๋กœ๋“œ โ†’ actions/deploy-pages๋กœ Pages ํ™˜๊ฒฝ์— ์ž๋™ ๋ฐฐํฌ

Try

  1. 'metrics.py'์— 'median(values)' ์ถ”๊ฐ€ ํ›„ push
  2. (์„ ํƒ) 'tests/test_metrics.py'์— ํ…Œ์ŠคํŠธ๋„ ์ถ”๊ฐ€
  3. Actions ์„ฑ๊ณต ํ›„, Pages์—์„œ ํ‘œ์— ์ƒˆ ํ–‰์ด ๋‚˜ํƒ€๋‚˜๋Š”์ง€ ํ™•์ธ

์ˆ˜์—… ์‹œ๋‚˜๋ฆฌ์˜ค

  • Step 1: mean๋งŒ ์žˆ๋Š” ์ƒํƒœ๋กœ push โ†’ ํŽ˜์ด์ง€์— Mean๋งŒ ๋œธ
  • Step 2: median ์ถ”๊ฐ€ ํ›„ push โ†’ Median ํ–‰ ์ถ”๊ฐ€
  • Step 3: min_value ์ถ”๊ฐ€ ํ›„ push โ†’ Min ํ–‰ ์ถ”๊ฐ€
  • Step 4: max_value, stdev ์ถ”๊ฐ€โ€ฆ

CI/CD๊ฐ€ ์ฝ”๋“œ/ํ…Œ์ŠคํŠธ/ํŽ˜์ด์ง€๋ฅผ ์—ฐ๋™ํ•˜๋Š” ๊ฐ๊ฐ์„ ์ฒดํ—˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages