์ธ์ฆ ์์ด ์ฝํ๋ ์๋ฒ ํ์ผ, Gitea Org-Mode ๋ ๋๋ง ๊ฒฐํจ ์ ๊ฒ ์์
์ฌ๋ด์ Gitea๋ฅผ ์ฌ๋ ค ๋ ํ์ด๋ผ๋ฉด ๋๋ถ๋ถ ์ด๋ฐ ๊ทธ๋ฆผ์ผ ๊ฒ์ด๋ค. ์ฌ์ค๋ง ํ์ผ ์ ์ปจํ ์ด๋ ํ๋ ๋์ ๋๊ณ , ์ฌ๋ฒ์ผ๋ก ๊ณ์ ๋ง๋ค๊ณ , ๊ณต๊ฐ ์ ์ฅ์ ๋ช ๊ฐ๋ ์ฌ์ธ์์๋ ๋ณด๋ผ๊ณ ๋ฆฌ๋ฒ์ค ํ๋ก์์ ๋ฌผ๋ ค ๋๋ค. ๊ทธ ๊ณต๊ฐ ์ ์ฅ์์ ๋ฌธ์ ํ ์ฅ์ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ ๋๋งํ๋ ์๊ฐ, ์๋ฒ ์์ชฝ ์ค์ ํ์ผ์ด ํ๋ฉด์ ๊ฐ์ด ๊ทธ๋ ค์ง ์ ์๋ค๋ ๊ฒ ์ด๋ฒ Gitea ์ด์์ ์์ง๋ค. ๋ก๊ทธ์ธ ์์ด, ๊ณ์ ์์ด.
- Gitea์ Org-Mode ๋งํฌ์ ๋ ๋๋ง ๊ฒฝ๋ก์์ ์ธ์ฆ๋์ง ์์ ์ฌ์ฉ์๊ฐ ์๋ฒ ๋ก์ปฌ ํ์ผ์ ์ฝ์ด๋ผ ์ ์๋ ๊ฒฐํจ์ด ๊ณต๊ฐ๋๊ณ , ์ฌ๊ฐ๋๋ critical๋ก ๋ถ๋ฅ๋จ
- ํต์ฌ์ "๋ฌธ์ ์์ ๋ค๋ฅธ ํ์ผ์ ๋์ด์ค๋" ๋งํฌ์ ๊ธฐ๋ฅ์ด ์ ์ฅ์ ๊ฒฝ๊ณ ๋ฐ๊น์ง ํด์๋๋ค๋ ์ — ์น์ ธ๋ ์ต์คํ๋ก์ ์ฒด์ธ๋ ํ์ ์์
- ํจ์น ์ ์ฉ์ด 1์์, ๊ทธ๋ค์์ด Org ํ์ผ ๋ ๋๋ง ํ์ ์กฐํ์ app.ini์ ๋ค์ด ์๋ ๋น๋ฐ๊ฐ ์ ๋ฉด ํ์์
๋ฌด์์ด ๋ฌธ์ ์๋
- Gitea๋ ์ ์ฅ์ ์์ ๋ฌธ์๋ฅผ ์น์์ ๋ฐ๋ก ๋ณด์ฌ์ฃผ๊ธฐ ์ํด Markdown, AsciiDoc, Org-Mode ๋ฑ ์ฌ๋ฌ ๋งํฌ์ ์ ์๋ฒ ์ธก์์ HTML๋ก ๋ณํํจ
- ์ด๋ฒ ๊ฒฐํจ์ ๊ทธ์ค Org-Mode ์ฒ๋ฆฌ ๊ฒฝ๋ก์ ์์. Org-Mode์๋ "๋ค๋ฅธ ํ์ผ์ ๋ด์ฉ์ ์ด ๋ฌธ์ ์์น์ ๋ผ์ ๋ฃ์ด๋ผ"๋ ์ฑ๊ฒฉ์ ํฌํจ(include) ๋ฌธ๋ฒ์ด ์๋๋ฐ, ์ด ๊ฒฝ๋ก๊ฐ ์ ์ฅ์ ๋๋ ํฐ๋ฆฌ ์์ผ๋ก ์ ํ๋์ง ์์์
- ๊ฒฐ๊ณผ์ ์ผ๋ก ๊ณต๊ฒฉ์๋ ์ ์ฑ ์ฝ๋๊ฐ ์๋๋ผ ๋ฌธ์ ํ ์ฅ๋ง ์ค๋นํ๋ฉด ๋จ. ์๋ฒ๊ฐ ๊ทธ ๋ฌธ์๋ฅผ ๋ ๋๋งํ๋ ์๊ฐ ์ง์ ๋ ๋ก์ปฌ ํ์ผ์ ์ฝ์ด ์๋ต์ ๋ด์ ์ค
- ๊ฐ์ฅ ๋ผ์ํ ๊ฑด ์ธ์ฆ ์๊ตฌ๊ฐ ์๋ค๋ ์ ์. ๊ณต๊ฐ ์ ์ฅ์ ์ด๋์ด ์ด๋ ค ์๊ฑฐ๋, ์ต๋ช ์ฌ์ฉ์๊ฐ ๋ณผ ์ ์๋ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๊ธฐ๋ฅ์ด ์์ผ๋ฉด ๊ทธ ์์ฒด๊ฐ ํธ๋ฆฌ๊ฑฐ๊ฐ ๋จ
์ ์ด๋ฐ ๊ฒฐํจ์ด ๋ฐ๋ณต๋๋์ง
ํฌํจ ๋ฌธ๋ฒ์ ๊ฐ์ง ๋ฌธ์ ํฌ๋งท์ ์ ๋ถ ๊ฐ์ ํจ์ ์ ์๊ณ ์๋ค๊ณ ๋ด๋ ๋ฌด๋ฐฉํจ. XML์ ์ธ๋ถ ์ํฐํฐ, LaTeX์ input, ํ ํ๋ฆฟ ์์ง์ partial, ๊ทธ๋ฆฌ๊ณ Org-Mode์ include๊น์ง ๋ฐ์์ด ๋์ผํจ. "์ ๋ขฐํ ์ ์๋ ๋ฌธ์"๋ฅผ ์ ์ ๋ก ์ค๊ณ๋ ๊ธฐ๋ฅ์, ์๋ฌด๋ ์ฌ๋ฆด ์ ์๋ ํ์ผ์ ๊ทธ๋๋ก ์ ์ฉํ ๊ฒ์ด ๊ทผ๋ณธ ์์ธ์. ๋ฌธ์ ๋ ๋๋ฌ๋ ๋ณธ๋ ๊ฐ์ธ ํธ์ง๊ธฐ ์์์ ์๊ธฐ ํ์ผ์ ๋ค๋ฃจ๋ผ๊ณ ๋ง๋ ๋ฌผ๊ฑด์ธ๋ฐ, ์ด๊ฑธ ๋ฉํฐํ ๋ํธ ์น ์๋น์ค๋ก ์ฎ๊ธฐ๋ฉด "๋ด ํ์ผ"์ ๋ฒ์๊ฐ ๊ณง ์๋ฒ ์ ์ฒด๊ฐ ๋์ด ๋ฒ๋ฆฐ๋ค.
๊ณต๊ฒฉ ์ฌํ์ ๊ฐ๋ ๋ง ์๋ฉด ์ถฉ๋ถํ๋ค. ์ ์ฅ์์ Org ํ์ฅ์ ๋ฌธ์๋ฅผ ํ๋ ๋ฃ๊ณ , ๊ทธ ์์์ ์๋ฒ ํ์ผ์์คํ ์ ์๋ ๊ฒฝ๋ก๋ฅผ ์๋ก ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๊ฒ ๋ง๋ ๋ค ์น UI์์ ๊ทธ ๋ฌธ์๋ฅผ ์ด์ด ๋ณด๋ ๊ฒ. ์ค์ ํ์ด๋ก๋๋ฅผ ๊ตณ์ด ์ ์ด ๋ ์ด์ ๋ ์๊ณ , ๋ฐฉ์ด์ ์ ์ฅ์์ ํ์ํ ๊ฑด "์์ฒญ ํ๋๋ก ๋๋๋ค"๋ ๊ฐ๊ฐ๋ฟ์.
๋ฌด์์ด ์์ด ๋๊ฐ๋ฉด ์น๋ช ์ ์ธ๊ฐ
- conf/app.ini — Gitea์ ์ฌ์ฅ. SECRET_KEY, INTERNAL_TOKEN, LFS_JWT_SECRET, ๋ฉ์ผ ๊ณ์ ๋น๋ฐ๋ฒํธ, DB ์ ์ ๋ฌธ์์ด์ด ํ๋ฐ ๋ค์ด ์์
- DB ์๊ฒฉ์ฆ๋ช — ์ ์ถ๋๋ฉด ์ฌ์ฉ์ ํ ์ด๋ธ๊ณผ ์ก์ธ์ค ํ ํฐ ํด์๊น์ง ์ด๋ ๊ฒฝ๋ก๊ฐ ์ด๋ฆผ
- SSH ํธ์คํธ ํค์ authorized_keys — Git over SSH๋ฅผ ์ฐ๋ ์กฐ์ง์ด๋ผ๋ฉด ์ค๊ฐ์ ๊ณต๊ฒฉ๊ณผ ์ ์ ์์กฐ์ ์ฌ๋ฃ๊ฐ ๋จ
- ์ปจํ ์ด๋๋ก ๋๋ฆฐ๋ค๋ฉด /proc/self/environ๋ฅ์ ๊ฒฝ๋ก — ํ๊ฒฝ๋ณ์๋ก ์ฃผ์ ํ ๋น๋ฐ๊ฐ์ด ๊ทธ๋๋ก ๋ ธ์ถ๋จ
ํ์ง: ์ด๋ฏธ ๋นํ๋์ง ์ด๋ป๊ฒ ๋ณด๋
- ์น ์๋ฒ·๋ฆฌ๋ฒ์ค ํ๋ก์ ์ก์ธ์ค ๋ก๊ทธ์์ .org ํ์ฅ์ ํ์ผ์ ํฅํ raw/blob/๋ฏธ๋ฆฌ๋ณด๊ธฐ ์์ฒญ์ ๊ธฐ๊ฐ ์ญ์ถ์ ์ผ๋ก ๋ฝ์ ๋ด. ์ ์ ์กฐ์ง์ด๋ผ๋ฉด Org ๋ฌธ์ ๋ ๋๋ง์ ๋น๋๊ฐ ๋งค์ฐ ๋ฎ์ ์ ํธ ๋ ์ก์๋น๊ฐ ์ข์ ํธ์
- ๊ฐ์ IP๊ฐ ์งง์ ์๊ฐ์ ์ฌ๋ฌ ์ ์ฅ์์ Org ๋ฌธ์๋ฅผ ๋ฐ๋ณต ์กฐํํ๊ฑฐ๋, ์ ๊ท ๊ฐ์ ์งํ ์ ์ฅ์๋ฅผ ๋ง๋ค๊ณ ๋ฌธ์ ํ๋๋ง ์ฌ๋ฆฐ ๋ค ์กฐํํ ํจํด์ ์ฐ์ ํ์ธํจ
- ์๋ต ํฌ๊ธฐ๊ฐ ์๋ณธ ๋ฌธ์ ๋๋น ๋น์ ์์ ์ผ๋ก ํฌ๊ฑฐ๋, 200 ์๋ต์ธ๋ฐ ๋ณธ๋ฌธ ๊ธธ์ด๊ฐ ๋ค์ญ๋ ์ญํ ์์ฒญ์ ๋์ฌ๊ฒจ๋ด
- ์ ์ฅ์ ์์ฑ ์ด๋ฒคํธ์ Org ํ์ผ ์ปค๋ฐ ์ด๋ฒคํธ๋ฅผ ๋์กฐํด, ์ฌ๋์ด ์ด ๋ฌธ์๊ฐ ์๋ ๊ฒ์ ๊ณจ๋ผ๋. ์ปค๋ฐ 1๊ฑด์ง๋ฆฌ ์ ์ฅ์๋ ํนํ ์์ฌ
- ๊ฐ๋ฅํ๋ฉด ์ธ์คํด์ค ์๋จ์ ์์๋ก Org ํ์ผ ์์ฒญ๋ง ๋ณ๋ ๋ก๊น ํ๋๋ก ๊ท์น์ ๊ฑธ์ด ๋๊ณ ๋ฉฐ์น ๊ด์ฐฐํ๋ ๊ฒ์ ๊ฐ์ธ์ ์ผ๋ก ์ถ์ฒํจ
์ํ: ์์๋๋ก ํ๋ฉด ๋จ
- ์ฒซ์งธ, ๊ณต์ ํจ์น๊ฐ ์ ์ฉ๋ ์ต์ ๋น๋๋ก ์ฌ๋ฆผ. ๋งํฌ์ ํ์ ๊ฒฐํจ์ ์ฐํ ํํฐ๋ก ๋ง์ผ๋ ค๋ค ์ ๊ท์๋ง ๋์ด๋๋ ๊ฒฝ์ฐ๊ฐ ์ฆ์, ์ ๊ทธ๋ ์ด๋๊ฐ ๊ฐ์ฅ ์ ๋ ดํ ํด๊ฒฐ์ฑ ์
- ๋์งธ, ๋น์ฅ ์ฌ๊ธฐ๋์ด ์ด๋ ค์ฐ๋ฉด ํ๋ก์ ๋จ์์ Org ํ์ฅ์ ๋ฌธ์์ ๋ ๋๋ง ๊ฒฝ๋ก๋ฅผ ์์ ์ฐจ๋จํ๊ฑฐ๋, ์ต๋ช ์ด๋์ ์ ์ ๋ซ์ ๋ ธ์ถ๋ฉด๋ถํฐ ์ค์
- ์ ์งธ, ์ธ์คํด์ค๊ฐ ์ธํฐ๋ท์ ์ง์ ๋ ธ์ถ๋ผ ์์๋ค๋ฉด app.ini์ ๋น๋ฐ๊ฐ์ ์ ๋ถ ์๋ก ๋ฐ๊ธํจ. ํจ์น๋ง ํ๊ณ ํค๋ฅผ ๊ทธ๋๋ก ๋๋ ๊ฑด ๋ฌธ์ ๊ณ ์น๊ณ ์ด์ ๋ ๋ฐ์ ๋ ๊ฒฉ์
- ๋ท์งธ, ํ์ ๋ฒ์์ ์ฌ์ฉ์ ์ก์ธ์ค ํ ํฐ, OAuth ์ฑ ์ํฌ๋ฆฟ, ์นํ ์ํฌ๋ฆฟ, ๋ฐฐํฌ ํค๊น์ง ํฌํจํจ. CI๊ฐ Gitea ํ ํฐ์ ๋ฌผ๊ณ ์๋ค๋ฉด ๊ทธ์ชฝ๋ ํจ๊ป ๊ต์ฒด
- ๋ค์ฏ์งธ, ๊ตฌ์กฐ์ ์ผ๋ก๋ Gitea ํ๋ก์ธ์ค๋ฅผ ์ต์ ๊ถํ ๊ณ์ ๊ณผ ๊ฒฉ๋ฆฌ๋ ํ์ผ์์คํ ์์ ๋๋ฆฌ๋๋ก ์ ๋ฆฌํจ. ์ค์ ํ์ผ์ ์ฝ๊ธฐ ์ ์ฉ ์ํฌ๋ฆฟ ๋ง์ดํธ๋ก ๋ถ๋ฆฌํด ๋๋ฉด ๋ค์๋ฒ ์ ์ฌ ๊ฒฐํจ์ ํผํด ๋ฐ๊ฒฝ์ด ํ์ฐํ ์ค์ด๋ฆ
์ ๋ฆฌํ๋ฉฐ
์ด๋ฒ ์ฌ๊ฑด์ด ๋จ๊ธฐ๋ ๊ตํ์ ์์ธ๋ก ๋จ์ํ๋ค. ์ฌ์ฉ์๊ฐ ์ฌ๋ฆฐ ํ์ผ์ ์๋ฒ๊ฐ ํด์ํ๋ ์ง์ ์ ์ ๋ถ ๊ณต๊ฒฉ๋ฉด์ด๋ผ๋ ๊ฒ. ์ด๋ฏธ์ง ์ธ๋ค์ผ ์์ฑ, ๋ฌธ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ, ๋งํฌ๋ค์ด ๋ ๋๋ง, ์ ์ฅ์ ํต๊ณ — ์ฐ๋ฆฌ๊ฐ ํธ์๋ฅผ ์ํด ์ผ ๋ ๊ธฐ๋ฅ๋ง๋ค ํ์๊ฐ ํ๋์ฉ ๋ถ์ด ์๊ณ , ๊ทธ ํ์๋ค์ ๋๊ฐ "์ฐฉํ ์ ๋ ฅ"์ ๊ฐ์ ํ๊ณ ๋ง๋ค์ด์ก๋ค. ์์ฒด ํธ์คํ ๋๊ตฌ๋ฅผ ์ด๋ค๋ ๊ฑด ๊ทธ ๊ฐ์ ์ ์ฐ๋ฆฌ๊ฐ ๋์ ์ฑ ์์ง๋ค๋ ๋ป์ด๊ธฐ๋ ํ๋ค.
์ค๋ ์ ๋ ์ 30๋ถ๋ง ๋ด์ ์ฐ๋ฆฌ Gitea ๋ฒ์ ํ์ธํ๊ณ , Org ํ์ผ ์์ฒญ ๋ก๊ทธ ํ ๋ฒ ํ๊ณ , app.ini ํค ๊ต์ฒด ๊ณํ๋ง ์ธ์ ๋๋ฉด ์ถฉ๋ถํ๋ค๊ณ ๋ณธ๋ค. ์ฌ๋ด ๊ฐ๋ฐ ์ธํ๋ผ๋ ๋ซ๋ฆฌ๋ฉด ์์ค์ฝ๋์ ๋ฐฐํฌ ํ์ดํ๋ผ์ธ์ด ํ๊บผ๋ฒ์ ๋์ด๊ฐ๋ ์๋ฆฌ๋ผ, ์ด๋ฐ ์ ๊ฒ์ ๋ฏธ๋ฃจ์ง ์๋ ํธ์ด ๋ง์์ด ํธํ๋ค. ์ฌ๋ฌ๋ถ ํ๊ฒฝ์์ ์ ํจํ๋ ํ์ง ๊ท์น์ด๋ ์ฐํ ์ํ ๋ฐฉ๋ฒ์ด ์๋ค๋ฉด ๋๊ธ๋ก ๊ณต์ ํด ์ฃผ์ธ์. ๊ฐ์ด ์ ๋ฆฌํด ๋๋ฉด ๋ค์ ๊ฒฐํจ์ด ์์ ๋ ํจ์ฌ ๋น ๋ฅด๊ฒ ๋์ํ ์ ์์ ๊ฒ๋๋ค.