'src/metrics.py'์ ํต๊ณ ํจ์๋ฅผ ํ๋์ฉ ์ถ๊ฐํ๊ณ pushํ๋ฉด, CI(๋ฌธ๋ฒ/ํ ์คํธ) ํ CD๊ฐ HTML์ ๋ค์ ์์ฑํด Pages์ ๋ฐ์ํฉ๋๋ค.
tools/build_site.py๋ **์ด๋ฒ ์์ ์ ํต์ฌ โ์๋ํ ๋น๋ ์คํฌ๋ฆฝํธโ**์ ๋๋ค. GitHub Actions์์ ๋ฐฐํฌ ๋จ๊ณ(CD) ๋ ํธ์ถ๋์ด ์ค์ ๋ก Pages์ ์ฌ๋ผ๊ฐ HTML์ ๋ง๋ค์ด ์ฃผ๋ ์ญํ ์ ํฉ๋๋ค.
๋จ๊ณ ๋์
- CSV ์ฝ๊ธฐ data/ ์์ CSV ํ์ผ๋ค์ ์ค์บํด์ ๋ฐ์ดํฐ๋ฅผ ์์งํฉ๋๋ค.
- ํต๊ณ ๊ณ์ฐ src/metrics.py์ ์๋ ํจ์๋ค์ ๋์ ์ผ๋ก ๋ถ๋ฌ์ ๊ฐ CSV์ ํต๊ณ๋ฅผ ๊ณ์ฐํฉ๋๋ค.
- HTML ์์ฑ docs/index.template.html์ ์๋ฆฌํ์์({{TABLES}}, {{UPDATED_AT}})๋ฅผ ์ค์ ๊ฐ์ผ๋ก ์นํํด site/index.html์ ๋ง๋ญ๋๋ค.
- 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 ๋ฐฐํฌ
GitHub๋ .github/workflows/ ๋๋ ํฐ๋ฆฌ์ ์๋ YAML ํ์ผ๋ค์ ์๋์ผ๋ก ์ฝ์ด ์ํฌํ๋ก์ฐ๋ก ๋ฑ๋กํฉ๋๋ค.
- ๋ก์ปฌ์์ ์์ฑ โ git add . โ git push
- GitHub ์น UI์์ ์์ฑ/์์ ๋ฆฌํฌ์งํ ๋ฆฌ โ Actions ํญ New workflow ํด๋ฆญ(๋๋ ๊ธฐ์กด ์ํฌํ๋ก์ฐ ์ ํ ํ Edit) .github/workflows/pages-ci-cd.yml ํ์ผ ๋ด์ฉ ๋ถ์ฌ๋ฃ๊ธฐ/์์ Commit changes ํด๋ฆญ
- ๋ฆฌํฌ์งํ ๋ฆฌ 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 ํ๊ฒฝ์ ์๋ ๋ฐฐํฌ
- 'metrics.py'์ 'median(values)' ์ถ๊ฐ ํ push
- (์ ํ) 'tests/test_metrics.py'์ ํ ์คํธ๋ ์ถ๊ฐ
- 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๊ฐ ์ฝ๋/ํ ์คํธ/ํ์ด์ง๋ฅผ ์ฐ๋ํ๋ ๊ฐ๊ฐ์ ์ฒดํํ ์ ์์ต๋๋ค.