포스트

[GitHub 100일 챌린지] Day 92 - 프로젝트 저장소 셋업

[GitHub 100일 챌린지] Day 92 - 프로젝트 저장소 셋업

100일 챌린지 Day 92 - 프로젝트 저장소를 전문적으로 셋업합니다.

배울 내용

  1. 저장소 초기화
  2. 프로젝트 구조 구성
  3. CI/CD 파이프라인 구축

저장소 생성

GitHub에서 생성

1
2
3
4
5
6
7
8
1. GitHub → New repository
2. 저장소 설정:
   - Name: my-awesome-project
   - Description: 프로젝트 설명
   - Public/Private 선택
   - ✅ Add README
   - ✅ Add .gitignore (언어 선택)
   - ✅ Choose a license (MIT 권장)

로컬에 클론

1
2
git clone https://github.com/username/my-awesome-project.git
cd my-awesome-project

저장소 기본 설정

저장소를 만든 직후에는 About 영역과 기본 브랜치 설정도 정리합니다.

항목 권장 설정
Description 프로젝트를 한 문장으로 설명
Website 배포 후 실제 URL 입력
Topics portfolio, github-actions, react처럼 검색 가능한 키워드
Default branch 보통 main
Issues 작업 관리에 사용할 예정이면 활성화
Discussions/Wiki 필요할 때만 활성화

처음부터 모든 기능을 켤 필요는 없습니다. 프로젝트 관리에 실제로 쓸 기능만 켜두면 저장소가 더 깔끔합니다.


프로젝트 구조 생성

Node.js 프로젝트

1
2
3
4
5
6
7
8
9
# package.json 생성
npm init -y

# 기본 디렉토리 생성
mkdir -p src tests docs .github/workflows

# 기본 파일 생성
touch src/index.js
touch tests/index.test.js

디렉토리 구조:

1
2
3
4
5
6
7
8
9
10
11
12
my-project/
├── .github/
│   └── workflows/
├── src/
│   └── index.js
├── tests/
│   └── index.test.js
├── docs/
├── .gitignore
├── README.md
├── LICENSE
└── package.json

Node.js 프로젝트라면 현재 LTS 계열을 기준으로 맞추는 것이 좋습니다. 로컬과 CI의 Node 버전이 다르면 “내 컴퓨터에서는 되는데 Actions에서는 실패”하는 문제가 생길 수 있습니다.

1
2
node --version
echo "22" > .nvmrc

팀 프로젝트라면 package-lock.json, pnpm-lock.yaml, yarn.lock 중 사용하는 패키지 매니저의 lockfile을 반드시 커밋합니다.


README 작성

프로페셔널한 README

1
2
3
4
5
6
7
# My Awesome Project

프로젝트 소개와 주요 기능을 설명합니다.

## 시작하기

설치 및 실행 방법을 안내합니다.

최종 프로젝트 README에는 최소한 아래 항목을 넣습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
## 주요 기능
- 기능 1
- 기능 2

## 실행 방법
```bash
npm install
npm run dev
```

## 테스트
```bash
npm test
```

## 배포
- Production URL:

README는 Day 97에서 더 자세히 다듬지만, Day 92에서 골격을 만들어두면 이후 기능 개발 중 계속 업데이트하기 쉽습니다.


CI/CD 파이프라인 구축

기본 CI Workflow

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# .github/workflows/ci.yml
name: CI

on:
  push:
    branches: [main, develop]
  pull_request:
    branches: [main, develop]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '22'
          cache: 'npm'
      - run: npm ci
      - run: npm test

테스트 스크립트가 아직 없다면 먼저 placeholder라도 명확히 둡니다.

1
2
3
4
5
6
{
  "scripts": {
    "test": "echo \"테스트를 추가하세요\" && exit 0",
    "build": "echo \"빌드 스크립트를 추가하세요\" && exit 0"
  }
}

다만 최종 프로젝트가 완성될수록 placeholder는 실제 테스트와 빌드 명령으로 교체해야 합니다.


브랜치 보호 준비

혼자 하는 프로젝트라도 main 브랜치에 바로 push하는 습관은 줄이는 것이 좋습니다. GitHub 저장소 Settings에서 Branch protection rule을 추가할 수 있습니다.

추천 규칙:

  • PR을 통해서만 main에 머지
  • CI 통과 후 머지
  • 최소 1개 이상의 리뷰 승인
  • force push 제한

개인 프로젝트에서는 너무 엄격하게 시작하지 않아도 됩니다. 하지만 최종 프로젝트를 포트폴리오로 보여줄 예정이라면 PR 기반 흐름을 적용해보는 것이 좋습니다.


정리

완료 체크:

  • GitHub 저장소 생성
  • 프로젝트 구조 생성
  • README 작성
  • CI/CD 파이프라인 구축
  • About, Topics, 기본 브랜치 설정 확인
  • Node 버전과 lockfile 정리

핵심 요약:

1
2
3
4
5
6
7
8
9
필수 파일:
- README.md
- .gitignore
- LICENSE
- CONTRIBUTING.md

CI/CD:
- .github/workflows/ci.yml
- 테스트 자동화

저장소 셋업은 파일을 만드는 일이 아니라, 이후 8일간의 개발이 흔들리지 않게 작업 규칙을 세우는 일입니다.

다음: Day 93 - 핵심 기능 개발 1 →


← Day 91 | 전체 커리큘럼 | Day 93 →

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.