-
-
Notifications
You must be signed in to change notification settings - Fork 3
Contributing
์ด ํ๋ก์ ํธ์ ๊ด์ฌ์ ๊ฐ์ ธ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๊ธฐ์ฌ๋ ์ธ์ ๋ ํ์์ ๋๋ค! ๐
๋ณธ ํ๋ก์ ํธ๋ GitHub์ ํ ๋ฆฌํ์คํธ(PR) ๊ธฐ๋ฐ์ผ๋ก ๊ธฐ์ฌ๋ฅผ ๊ด๋ฆฌํ๊ณ ์์ต๋๋ค.
๋จผ์ ํ๋ก์ ํธ๋ฅผ ํฌํฌํ๊ณ PR์ ๋ณด๋ด๋ ๋ฐฉ๋ฒ์ ์ฐธ๊ณ ํด ์ฃผ์ธ์.
- Bun ์ค์นํ๊ธฐ
-
ํ๋ก์ ํธ๋ฅผ ํฌํฌํ๊ณ PR์ ๋ณด๋ด๋ ๋ฐฉ๋ฒ์ ์ฐธ๊ณ ํด์ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์์ ์ ๊ณ์ ์ ํฌํฌํ๊ณ , ํด๋ก ํฉ๋๋ค.
- ์ด ๋ ํด๋ก ํ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ ์คํธ๋ฆผ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋๊ธฐํํ๋ ์ค์ ์ ํจ๊ป ์ ์ฉํ๋ฉด ๊ธฐ์ฌ์ ์ฉ์ดํฉ๋๋ค.
- ํฐ๋ฏธ๋์์ ์๋ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค:
cd path/to/daleui # ์์กด์ฑ ์ค์น bun install # Storybook ์คํ (๋์์ธ ์์คํ ๊ธฐ์ฌ ์) bun run sb # or bun run storybook # ๋ง์ผํ ์น์ฌ์ดํธ ์คํ (๋ง์ผํ ์น์ฌ์ดํธ ๊ธฐ์ฌ ์) bun run dev
- Figma: ๋์์ธ, ํ๊ณ
- React: UI renderer
- Panda: Styling engine
- Ark UI: Headless UI components
- Storybook: ์ปดํฌ๋ํธ ์์ฐ, ๋ฌธ์ํ
- Chromatic: UI Preview/Tests/Reviews
- Vite: Bundler
- Vitest: Test Runner, Test Matcher
- TestingLibrary: UI Testing
- HappyDom: Testing DOM
- ESLint: Linter
- Prettier: Formatter
- GitHub Actions: CI/CD
- Bun: JS Runtime
- ๋ฌด๋ฃ ํ๋ก์ ํธ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ธ ๊นํ๋ธ ํ๋ก์ ํธ๋ฅผ ํตํด ์ด์(Jira ํฐ์ผ๊ณผ ๊ฐ์ ๊ฐ๋ )๋ฅผ ๊ด๋ฆฌํด ์ฃผ์ธ์.
- ์ด์๋ฅผ ์์ฑํ ๋ ์ ํ(Type)์ ๋ฐ๋์ ์ ํํด์ฃผ์๊ณ , ํ๋ก์ ํธ์ ์ถ๊ฐ ํ ์ฐ์ ์์(Priority)์ ์์ ์์ ์๊ฐ(Est)๋ ํจ๊ป ๋ฃ์ด์ฃผ์ธ์.
- ์ด์๋ฅผ ์์ฑํ ๋ ์คํ๋ฆฐํธ(Sprint)์ ์ํ(Status)๋ ๋น์๋์ด ์ผ๋จ ๋ฐฑ๋ก๊ทธ(Backlog)์ ๋๋๋ก ํด ์ฃผ์ธ์.
- ์ด์๋ ํ ํ์ ๋ Grooming, Triage, Planning ๊ณผ์ ์ ๊ฑฐ์น ํ์ ์คํ๋ฆฐํธ์ ์ถ๊ฐํด ์ฃผ์ธ์.
- ๊ธด๊ธ ์ด์๊ฐ ์๊ฑฐ๋ ์คํ๋ฆฐํธ์ To Do ์ด์๊ฐ ์์ง๋์์ ๋๋ ๋์ค์ฝ๋์์ ์ํต ํ์ ํ์ฌ ์คํ๋ฆฐํธ์ ์ถ๊ฐํด์ฃผ์ธ์.
- ์์จ์ ์ธ ํ์ ๊ณผ ์๋ฐ์ ์ธ ๊ธฐ์ฌ๋ฅผ ์ํด ํน๋ณํ ์ฌ์ ๊ฐ ์๋ค๋ฉด ์ด์๋ฅผ ์์ฑํ ๋ ๋ด๋น์๋ฅผ ์ค์ ํ์ง ๋ง์ธ์.
- ์ด์ ์ํ๋ ์คํ๋ฆฐํธ์ ์ถ๊ฐ๋์์ ๋ ๋ถํฐ To Do๋ก ์ค์ ํด์ฃผ์ธ์.
- ์์ ์ ์์ํ์๋ฉด ์ด์์ ์ํ๋ฅผ ๋ฐ๋์ In Progress๋ก ์ฎ๊ฒจ์ฃผ์ธ์. (๋ง์ด ๊น๋จน๋ ๋ถ๋ถ์ด๋ ๊ผญ ์ง์ผ ์ฃผ์ธ์.)
- ์ด์๊ฐ ์ฐ๊ฒฐ๋ Pull Request๊ฐ ๋ณํฉ๋๋ฉด ์ด์๋ ์๋์ผ๋ก Done ์ํ๋ก ์ ํ๋ฉ๋๋ค.
- ๋์์ 2๊ฐ ์ด์ ์ด์๋ฅผ ํ ๋นํ์ง ์๋๋ก ์ฃผ์ํด์ฃผ์ธ์. WIP๊ฐ 2๋ณด๋ค ์ปค์ง๋ฉด ํ์ ๋ฆฌ๋ทฐ ๋ถ๋ด์ด ์ปค์ง๋ ์ฐธ๊ณ ํด ์ฃผ์ธ์.
- ์๋ธ ์ด์๋ Spike ํฐ์ผ์์ ํ์๋ Action ํฐ์ผ์ ํํด ์ฌ์ฉํด ์ฃผ์ธ์.
- ์๋ธ ์ด์๊ฐ ์๋ฃ๋์ง ์์๋, ์์ Spike ํฐ์ผ(Parent Issue)์ ์๋ฃ ์ฒ๋ฆฌํด ์ฃผ์ธ์.
- ์ด์๊ฐ ์คํ๋ฆฐํธ 1ํ ์ด์ ์ด๊ด๋ ๊ฒฝ์ฐ
spilloverlabel์ ์ถ๊ฐํด์ฃผ์ธ์. - ์ด์๊ฐ ์คํ๋ฆฐํธ 2ํ ์ด์ ์ด๊ด๋ ๊ฒฝ์ฐ ๊ณต๋ก ํํ๊ณ blocker ์ฌ๋ถ๋ฅผ ํ์ธํ์ฌ ํด๊ฒฐ ๋ฐฉํฅ์ ์ ๋ฆฌํด์ฃผ์ธ์.
์ฃผ๊ฐ Sprint ํ์๋ก ์ด์๋ GitHub Actions๋ฅผ ํตํด ์๋์ผ๋ก ์์ฑ๋ฉ๋๋ค.
์ด ์๋ํ๋ ํ์ฌ ํ๋ก์ ํธ์ Sprint ์ผ์ ๊ธฐ์ค์ผ๋ก ๋์ํฉ๋๋ค. ํ์์๋ ๋ณ๋ Repository Variables ์ค์ ์์ด ๋์ํฉ๋๋ค. ๋น์ ๊ท ์คํ๋ฆฐํธ๋ ์ฌ์ด๊ฐ๋ ์ฃผ ๋ฑ์ผ๋ก ํน์ ์ฃผ์ ํ์๋ก ์ด์ ์์ฑ์ ๊ฑด๋๋ฐ์ด์ผ ํ ๋๋ง, ์๋ ์คํ ์๊ฐ ์ ์ Repository Variables์ ์๋ ๊ฐ์ ์ค์ ํด ์ฃผ์ธ์.
| Variable | ์ค๋ช | ๊ฐ |
|---|---|---|
SKIP_NEXT_RUN |
๋ค์ ์๋ ํ์๋ก ์ด์ ์์ฑ์ ๊ฑด๋๋๋๋ค. | true |
๊ฑด๋๋ฐ๊ธฐ ์ค์ ์ด ๋ ์ด์ ํ์ํ์ง ์์ ๊ฒฝ์ฐ, SKIP_NEXT_RUN ๊ฐ์ ๋น์๋๋ฉด ๋ค์ ์๋ ์คํ๋ถํฐ ๋ค์ ํ์๋ก ์ด์๊ฐ ์์ฑ๋ฉ๋๋ค.
์๋์ผ๋ก ํ์๋ก ์ด์๋ฅผ ์์ฑํด์ผ ํ๋ ๊ฒฝ์ฐ์๋ GitHub Actions ํญ์์ Create Weekly Meeting Issue ์ํฌํ๋ก๋ฅผ ์ ํํ ๋ค, Run workflow๋ฅผ ์คํํ๋ฉด ๋ฉ๋๋ค.
-
ํ๋ก์ ํธ ๋ณด๋์์
To Do์ํ์ ํฐ์ผ์ ์ ํํ๊ณ ๋ณธ์ธ์๊ฒ ํ ๋นํด ์ฃผ์ธ์. - ํ๋ก์ ํธ ์ค์
- ๋จผ์ ํ๋ก์ ํธ ์ค์ ๊ฐ์ด๋๋ฅผ ์๋ฃํด ์ฃผ์ธ์.
- ๋ธ๋์น ์์ฑ
-
main๋ธ๋์น์์ ์๋ก์ด feature ๋ธ๋์น๋ฅผ ์์ฑํด ์ฃผ์ธ์. - ๋ธ๋์น ์ด๋ฆ์๋
-,_์ธ์ ํน์๋ฌธ์๋ฅผ ์ฌ์ฉํ์ง ๋ง์ธ์.
์ฐธ๊ณ ์ด์
- ๊ธฐ๋ฅ ๊ตฌํ ๋ฐ ์ปค๋ฐ
- ๋ธ๋์น ๋ด์์ ์์ค ์ฝ๋๋ฅผ ์์ ํ๊ณ ์ปค๋ฐํด ์ฃผ์ธ์.
- ๋ณ๊ฒฝ์ด ๋ชจ๋ ์๋ฃ๋๋ฉด ํฌํฌ๋ฐ์ ๋ฆฌํฌ์งํ ๋ฆฌ ๋ธ๋์น๋ฅผ ํธ์ํด ์ฃผ์ธ์.
- ํ ์คํธ ์์ฑ
- ๊ธฐ์ฌํ ์ฝ๋๊ฐ ์ ์์ ์ผ๋ก ๋์ํ๋์ง ํ์ธํ๋ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํด ์ฃผ์ธ์.
- PR ์์ฑ
-
Pull Requests ํ์ด์ง์์ ์๋ก์ด PR์ ์์ฑํด ์ฃผ์ธ์.
-
PR ์ ๋ชฉ๊ณผ ์ค๋ช ์ ๊ฐ๊ธ์ ํ๊ตญ์ด๋ก ์์ฑํด์ฃผ์ธ์. ์ด์ ์ ๋ชฉ๊ณผ ์ผ์นํ๋๋ก ์์ฑํด ์ฃผ์ธ์.
-
PR์ด ๋ฑ๋ก๋ ์ด์์ ์ฐ๊ด๋๋ค๋ฉด, PR ์์ฑ ํ ์ค๋ฅธ์ชฝ ์ฌ์ด๋๋ฐ
PR ์ด์ ์ฐ๊ฒฐ ์์Developmentํญ๋ชฉ์์ ํด๋น ์ด์๋ฅผ ์ ํํด ์ฐ๊ฒฐํด์ฃผ์ธ์.
- PR ๋ฆฌ๋ทฐ ๋ฐ ๋ณํฉ
- ์ต์ ํ ๋ช ์ด์์ ๊ด๋ฆฌ์์๊ฒ PR ๊ฒํ ์ ์ฝ๋ฉํธ๋ฅผ ๋ฐ์ ์ฃผ์ธ์.
- ๋ณ๊ฒฝ ์์ฒญ์ด ์์ ๊ฒฝ์ฐ, ์์ ์ ๋ฐ์ํ ํ ๋ค์ ํธ์ํ๊ณ ๋ฆฌ๋ทฐ๋ฅผ ์์ฒญํด ์ฃผ์ธ์.
- ๋์์ธ ๋ณ๊ฒฝ์ด ์์ ๊ฒฝ์ฐ, PR์ ui ํ๊ทธ๋ฅผ ๋ฌ์์ Chromatic์ ์คํํด ์ฃผ์ธ์.
- UI Review ์ฒดํฌ์์ ํด๋น ๋์์ธ์ ๋ด๋นํ ๋์์ด๋์๊ฒ ๋ฆฌ๋ทฐ๋ฅผ ์์ฒญํด ์ฃผ์ธ์. (์์ฑ๋ PR์ ํ๋จ Merge ๋ถ๋ถ์์ ํ์ธํ ์ ์์) [็ปๅ:image]
[็ปๅ:image]UI Review: ์์ ๋ด์ญ์ ๋์์ธ ๋ด๋น์์๊ฒ ํ์ธ ์์ฒญํ๋ ์์
UI Tests: ์ฝ๋ ๋ณ๊ฒฝ์ด ์๋์น ์์ UI ๋ณํ๋ฅผ ์ผ์ผํค์ง ์์๋์ง, Chromatic ์ค๋ ์ท์ ํ๋์ฉ ๋น๊ตํ๋ฉฐ ๊ฐ๋ฐ์๊ฐ ์ง์ ํ์ธํ๋ ์์
-
์ต์ 1๊ฐ์ ์น์ธ์ ๋ฐ์ ํ
main๋ธ๋์น์ ๋ณํฉํด ์ฃผ์ธ์. - ์ดํ ๋ฆด๋ฆฌ์ฆ๋ฅผ ํตํด ๊ธฐ์ฌํ ๋ด์ฉ์ด ๋ฐฐํฌ๋ฉ๋๋ค.
- PR ๋ณํฉ์ ํ๊ธฐ ์ํด์๋ ์ต์ 1๋ช ์ ๋๋ฃ ๊ฐ๋ฐ์๋ก๋ถํฐ ์น์ธ์ ๋ฐ์์ผ ํ์ง๋ง, ํ์ง ํฅ์์ ์ํด์ ๊ธด๊ธ ๊ฑด์ด ์๋๋ผ๋ฉด 2๊ฐ์ ์น์ธ์ ๋ฐ๋ ๊ฒ์ด ๊ถ์ฅ๋ฉ๋๋ค.
- [Proposed] "Resolve conversation" ๋ฒํผ์ ์ฝ๋ ๊ฒํ ์๊ฐ ํผ๋๋ฐฑ์ด ๋ณธ์ธ์ด ์๋ํ ๋๋ก ์กฐ์น๋์๋์ง ํ์ธํ๋ ์ฐจ์์์ ๋๋ฆ ๋๋ค. ์ฝ๋ ์์ฑ์๊ฐ ์์๋ก Resolved ํ์ํ ์ ์คํด๊ฐ ์๊ธธ ์ ์์ต๋๋ค.
- ํญ์ ์์กด์ฑ์ ์ต์ ์ํ๋ก ์ ์งํ๋๋ก Dependabot์ ์ฝ๋ ์ ์ฅ์์ ์ค์ ํด๋์์ต๋๋ค.
- Dependabot์ด ์ฌ๋ฆฐ PR์ ๋ฆ์ง ์๊ฒ ๊ฒํ ๋ฐ ๋ณํฉํ๊ณ ์๋ก์ด ๋ฒ์ ์ด ์ผ์ผํค๋ breaking changes๋ฅผ ๋์ํ๋ ์์ ์ ํ ๊ฐ๋ฐ์ ๋ชจ๋์ ๊ณต๋ ์ฑ ์์ ๋๋ค.
- Dependabot์ด ์ฌ๋ฆฐ PR์ ๋ฐ๋์ PR ์ฝ๋ฉํธ๋ฅผ ํตํด์ Dependabot์๊ฒ ์ํ์๋ ์์ ์ ์์ผ์ฃผ์ธ์. ์ง์ ์์ ํ์๋ฉด Dependabot์ ํด๋น PR์ ๋ ์ด์ ์๋์ผ๋ก ๊ด๋ฆฌํด์ฃผ์ง ์์ต๋๋ค.
main ๋ธ๋์น์ ํ์ง ๊ธฐ์ค์ ๋ฏธ๋ฌํ๋ ์ฝ๋๊ฐ ์ ์ ์ด ๋์ง ์๋๋ก PR์ ์ฌ๋ฆฌ์๋ฉด ์๋์ผ๋ก ํ์ง ๊ฒ์ฌ๊ฐ ์งํ๋๊ณ ์คํจํ ๊ฒฝ์ฐ ๋ณํฉ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค. ๊ฐ ํ์ง ๊ฒ์ฌ๋ ๊ฐ๋ฐ์๊ฐ ๋ก์ปฌ ํ๊ฒฝ์์ ์ง์ ์งํํ์ค ์๋ ์์ต๋๋ค.
Prettier๋ฅผ ํตํด์ ์ผ๊ด์ ์ธ ์ฝ๋ ํฌ๋ฉงํ ์ ์ ์งํ๊ณ ์์ต๋๋ค. VSCode ์ฌ์ฉ์ ๋ถ๋ค์ Prettier ์ต์คํ ์ ์ ์ฐ์๋ฉด ์ฝ๋๋ฅผ ์์ฑํ๋ฉด์ ์๋์ผ๋ก ์ฝ๋๋ฅผ ํฌ๋ฉงํ ํ ์ ์์ด์ ํธํ๋ ์ถ์ฒ๋๋ฆฝ๋๋ค.
Prettier options ๋ ๊ธฐ๋ณธ ์ค์ ๊ฐ์ผ๋ก ํด์ฃผ์๊ธธ ๋ฐ๋๋๋ค.
ESLint๋ฅผ ํตํด์ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๊ณ ์์ต๋๋ค. ๋ฆฐํ ๊ท์น์ ์๋ฐํ๊ณ ์๋ ์ฝ๋๊ฐ ์๋์ง ํ์ธํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
# ์ ์ฒด ๊ฒ์ฌ bun run lint # ํน์ ํ์ผ ๊ฒ์ฌ bun run lint src/components/TextInput/TextInput.tsx
TypeScript๋ฅผ ํตํด์ ์ ์ ํ์ ๊ฒ์ฌ๋ฅผ ํ๊ณ ์์ต๋๋ค. ํ์ ์ค๋ฅ๊ฐ ์๋์ง ํ์ธํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
bunx tsc
flowchart TD
RELEASE_PR["1. GitHub UI > Actions์์<br/>Release PR ์์ฑ<br/>(๊ฐ๋ฐ์)"]
TAG["3. ์๋์ผ๋ก ํ๊ทธ & GitHub Release Draft ์์ฑ๋จ<br/>(GitHub Action)"]
PUBLISH["4. npm publish ์คํ<br/>(GitHub Action)"]
RELEASE_PR --> |"2. Release PR Approve & Merge<br/>(๊ฐ๋ฐ์)"| TAG
TAG --> PUBLISH
- Release PR ์์ฑ: GitHub UI์์ Actionsํญ > ์ข์ธก ์ฌ์ด๋๋ฐ Workflow ๋ชฉ๋ก ์ค, 'Release PR โฌ๏ธ' ํด๋ฆญ > Run workflow ํด๋ฆญ > Branch๋ main, Version bump type์ patch/minor/major ์ค ์ ํ > 'Run workflow'๋ฒํผ ํด๋ฆญ
[็ปๅ:image]
- patch: ํ์ ํธํ์ฑ์ ์ ์งํ๋ฉด์ ๋ฒ๊ทธ๋ฅผ ์์ ํ์ ๋
- ๊ธฐ๋ฅ ์ถ๊ฐ ์์ด ์คํ๋ฅผ ๊ณ ์น๊ฑฐ๋ ์ฑ๋ฅ์ ๊ฐ์ ํ๋ ๋ฑ ์ฌ์ํ ์์ ์ผ ๋
- minor: ํ์ ํธํ์ฑ์ ์ ์งํ๋ฉด์ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ ๋
- ์๋ก์ด ์ปดํฌ๋ํธ๋ ํจ์๊ฐ ์๊ฒผ์ง๋ง, ๊ธฐ์กด ๊ธฐ๋ฅ๋ ๊ทธ๋๋ก ์ธ ์ ์์ ๋
- major: ํธํ๋์ง ์๋ API ๋ณ๊ฒฝ ์ฌํญ์ด ์๊ฒผ์ ๋ (์ด์ ๋ฒ์ ๊ณผ ํธํ ์ ๋จ)
- ๊ธฐ๋ฅ์ด ์์ ํ ๋ฐ๋๊ฑฐ๋ ์ญ์ ๋์ด, ์ฌ์ฉ์๊ฐ ์ฝ๋๋ฅผ ๊ณ ์ณ์ผ ํ ๋ (Breaking Changes)
2. ์์ฑ๋ Release PR Approve & Merge
[็ปๅ:image]
- Release PR์ด Merge๋๋ฉด ์๋์ผ๋ก ํ๊ทธ & GitHub Release Draft ์์ฑ๋จ
- GitHub์ Code ํญ ํด๋ฆญ > ํ๋ฉด ์ค๋ฅธ์ชฝ ์ค๊ฐ๋ถ๋ถ์ Release ๋ถ๋ถ ํด๋ฆญ
-> ์์ฑ๋ Release Draft์ Edit๋ชจ๋ > Release notes ๋ฑ ์์ ํ 'Publish release'๋ฒํผ ํด๋ฆญ
- npm์ฌ์ดํธ์์ ๋ฒ์ update ํ์ธ
์ฝ๋ ์คํ์ผ, ๋ค์ด๋ฐ ๊ท์น, PR ์์ฑ ๊ท์น ๋ฑ์ ์ดํดํ๊ธฐ ์ํด ๋จผ์ ์ปจ๋ฒค์ ๋ฌธ์๋ฅผ ์ฝ์ด์ฃผ์ธ์.