second - HJ-Rich/2022-MyRSS GitHub Wiki
release ๋ธ๋์น๋ฅผ ์๋ตํ Git Flow๋ฅผ ์ ํ
- Git Flow, Github Flow ๋ฑ์ ์ ํ์ง ์ค์ Git Flow๋ฅผ ์ ํ
- ๋ค๋ง release ๋ธ๋์น์ ์ด๋ฅผ ์ด์ฉํ QA ๊ณผ์ ์ develop ๋ธ๋์น์์ ์ํํจ์ผ๋ก์จ ์๋ต
- Github Flow ๋ฑ์ ๋จ์ผ ๋ธ๋์น๋ง ์ด์ํ๊ธฐ์๋ ์ค์ ์ด์ ํ๊ฒฝ๊ณผ ์ต๋ํ ์ ์ฌํ ํ๊ฒฝ์์์ ํ ์คํธ ๊ณผ์ ์ ๋๋ฝํ๊ธฐ ์ด๋ ต๋ค๊ณ ํ๋จ.
- ๋ณ๋์ QAํ์ด ์กด์ฌํ์ง ์๊ณ , ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ด์ ๊ฐ๋ฐ ์์ ๋จ๊ณ๋ผ๋ฉด, Develop ๋ธ๋์น์์ ํ ์คํธ ํ ์ด์ ๋ฐฐํฌํด๋ ์ถฉ๋ถํ๋ค๊ณ ํ๋จ.
-
์ด์ ์์ฑ
->develop ๋ธ๋์น์์ feature/๊ฐ๋ฐ๋ด์ฉ ๋ธ๋์น ํ์
->develop์ผ๋ก PR & ๋จธ์ง
->main์ develop PR & ๋จธ์ง ํ๋ก์ธ์ค
๋ก ์งํ.- MVP 1์ฐจ ๋ฐฐํฌ ์ ๊น์ง๋ develop ๋ธ๋์น์ ์ง์ ์์
- ๐ฅ Git Flow ํ ์คํผ
- Git Flow ๊ฐ CI/CD ์ ์ด์ธ๋ฆฌ์ง ์๋ ์ด์ by David Farley
/api ๋ฅผ prefix๋ก ๊ฐ๋ Restful API ์ค๊ณ๋ฅผ ์ถ๊ตฌ
- ๋ชจ๋ api๋
/api/**
ํ์์ผ๋ก /api๋ฅผ prefix๋ก ๊ฐ์ง๋๋ก ์ค๊ณ- Web Server์์ ํ๋ก ํธ์๋, ๋ฐฑ์๋๋ฅผ ๋ถ๊ธฐํ๋๋ฐ location์ด /api ์ผ ๊ฒฝ์ฐ ๋ฐฑ์๋๋ก ๋ถ๊ธฐํ๋๋ก ์ฒ๋ฆฌํ๋๋ฐ ์ฌ์ฉ
- ํ๋ก ํธ์ ๋ฐฑ์๋๊ฐ Same-Origin์ ์กด์ฌํ ์ ์๊ฒ ํด์ฃผ๋ ๋ฐ ํต์ฌ์ ์ธ ์ญํ
- Restful API ๋ฅผ ๊ฐ๊ธ์ ์ค์ํ์ฌ ์ง๊ด์ ์ด๋๋ก ์ค๊ณ
- ์กฐํ GET, ์์ฑ POST, ์์ PATCH, ์ญ์ DELETE ๋ฉ์๋๋ฅผ ์ฌ์ฉ
- POST ๋ GET, PUT, DELETE ์ ํ์คํ ์ํ์ง ์๋ ์์ฒญ์๋ ์ฌ์ฉํจ
- PUT ์ ํด๋น ์์์ด ์์ผ๋ฉด ์์ฑ ๋ฐ 201์๋ต, ์์ผ๋ฉด ๋์ฒด ๋ฐ 200์๋ตํ๋ ๊ฒ์ด ๊ท์ฝ. ๋ฐ๋ผ์ ์์ ์ PATCH ์ ํ
- ์กฐํ GET, ์์ฑ POST, ์์ PATCH, ์ญ์ DELETE ๋ฉ์๋๋ฅผ ์ฌ์ฉ
- ์์ ์๋ํฌ์ธํธ๋ค
- GET /api/feeds?page={page}&size={size} : ์ ์ฒด ํผ๋ ์กฐํ ๋ฐ ํ์ด์ง
- POST /api/rss : JSON ํํ์ body ๊ฐ์ ์ด์ฉํด RSS ์ ๋ณด ๋ฑ๋ก
- DELETE /api/rss/{rssId} : PathVariable๋ก ์ ๋ฌ๋ RSS ์๋ณ์๋ฅผ ํตํด RSS ์ ๋ณด ์ญ์
๊ฐ๋ฐ ์๋ฒ์ ์ด์ ์๋ฒ์ ๋ถ๋ฆฌ
- ๊ฐ๋ฐ, ์ด์ ํ๊ฒฝ์ ๋ถ๋ฆฌํจ
- ๊ฐ๋ฐ ์๋ฒ : https://dev.myrss.ga
- ์ด์ ์๋ฒ : https://myrss.ga
- ๊ฐ๋ฐ ์๋ฒ๋ develop ๋ธ๋์น, ์ด์ ์๋ฒ๋ main ๋ธ๋์น ๊ธฐ์ค์ผ๋ก ๋ฐฐํฌ๋จ
- ๋ฐ๋ผ์ ๊ฐ๋ฐ ์๋ฒ์ ๋ณ๊ฒฝ์ฌํญ์ ์ด์ ํ๊ฒฝ์ ์ํฅ์ ๋ฏธ์น์ง ์์
- ๊ฐ๋ฐ ์๋ฒ๋ ์ ๊ทน์ ์ผ๋ก ๋ฐฐํฌ ๋ฐ ๋กค๋ฐฑ์ ์ํํ๊ธฐ์ ๋ถ๋ด์ด ์์ด์ ์ ์ ์ฉ ๋ฐ ํ ์คํธ ํ ์ด์๊ฐ ์๋ค๋ฉด main์ผ๋ก ๋จธ์งํ๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ
Github Webhook -> Jenkins Multibranch-pipeline -> ์๋ฒ ๋ฐฐํฌ
- Github -> Jenkins -> ์๋ฒ ๋ก ์๋ ๋ฐฐํฌ๋๋๋ก ๊ตฌ์ฑ
- Github์์ Jenkins๋ก ์ฐ๊ฒฐ์ Github์ Webhook ๊ธฐ๋ฅ์ ์ด์ฉ
- Jenkins์์๋ ๋ฆฌํฌ์งํ ๋ฆฌ ๋ด ๋ณ๊ฒฝ์ฌํญ์ ๊ฐ์งํด์ frontend/** backend/** ๊ฐ ๊ฒฝ๋ก ์ดํ ๋ณ๊ฒฝ์ด ์์ ๊ฒฝ์ฐ์๋ง ํ๋ก ํธ, ๋ฐฑ์๋๋ฅผ ๊ฐ๊ฐ ์ฌ๋ฐฐํฌ
- ๋ํ Jenkins์์๋ develop, main ๋ธ๋์น๋ฅผ ์๋ณํ์ฌ develop์ผ ๊ฒฝ์ฐ ๊ฐ๋ฐํ๊ฒฝ์ผ๋ก, main์ผ ๊ฒฝ์ฐ ์ด์ํ๊ฒฝ์ผ๋ก ๋ฐฐํฌ
- Jenkins๋ ๋น๋ ๊ฒฐ๊ณผ๋ฅผ ์๋ฒ๋ก ์ ๋ฌํ ๋ค, ์๋ฒ์ ์๋ ์ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๊ณ Slack์ผ๋ก ์๋ฆผ์ ๋ณด๋์ผ๋ก์จ ๋ณธ์ธ์ Job์ ์ข ๋ฃ
- ์๋ฒ์ ์ ์คํฌ๋ฆฝํธ๋ ๊ธฐ์กด์ ๋ฐฐํฌ๋์ด ์๋ ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃํ ๋ค, ์๋ก์ด ๋น๋ ํ์ผ๋ก ํ๋ก์ธ์ค๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํํจ์ผ๋ก์จ ์ต์ข ๋ฐฐํฌ ์ฒ๋ฆฌ
- Jenkins, Multibranch-pipeline์ ์ด์ฉํ CD
ํ์ ์๊ตฌ์ฌํญ ์ ์ฒด ๋ณด๊ธฐ