Skip to content

rexfelix/felix-devops

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

12 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Version

create-felix-devops

A customized DevOps project generator CLI. This tool scaffolds a new project with pre-configured DevOps tools, including Semantic Release and GitHub Actions.

Installation

You can use this package directly with npx:

npx create-felix-devops

Or install it globally:

npm install -g create-felix-devops

Usage

Run the following command and follow the interactive prompts to create a new project:

npx create-felix-devops

Features

  • Interactive CLI: Easy-to-use project setup wizard.
  • Pre-configured Template: Includes standard DevOps configurations.
    • Semantic Release (.releaserc.json)
    • GitHub Actions Workflows (.github/)
    • Documentation structure (docs/)

πŸš€ Felix DevOps Starter

Commitizen + Semantic Release + GitHub Releases μžλ™ν™” ν…œν”Œλ¦Ώ

이 ν”„λ‘œμ νŠΈλŠ” μƒˆ ν”„λ‘œμ νŠΈλ₯Ό μ‹œμž‘ν•  λ•Œ DevOps/Release μžλ™ν™”λ₯Ό ν•œ λ²ˆμ— μ„ΈνŒ…ν•΄μ£ΌλŠ” μŠ€νƒ€ν„° ν…œν”Œλ¦Ώ μƒμ„±κΈ°μž…λ‹ˆλ‹€.

λͺ©ν‘œλŠ” 단 ν•˜λ‚˜μž…λ‹ˆλ‹€.

πŸ‘‰ main λΈŒλžœμΉ˜μ— merge/push만 ν•˜λ©΄ 버전 Β· νƒœκ·Έ Β· CHANGELOG Β· GitHub Releaseκ°€ μžλ™ μƒμ„±λ˜κ²Œ λ§Œλ“ λ‹€

즉,

  • μˆ˜λ™ 버전 관리 ❌
  • μˆ˜λ™ 릴리즈 λ…ΈνŠΈ ❌
  • μˆ˜λ™ νƒœκ·Έ ❌
  • μˆ˜λ™ GitHub Release ❌

➑ μ „λΆ€ μžλ™ν™” βœ…


βœ… 이 ν…œν”Œλ¦Ώμ΄ μ œκ³΅ν•˜λŠ” κΈ°λŠ₯

ν”„λ‘œμ νŠΈ 생성 μ‹œ μžλ™ 포함:

  • Commitizen (cz) – 컀밋 λ©”μ‹œμ§€ ν‘œμ€€ν™”
  • Semantic Release – 버전 μžλ™ 계산
  • GitHub Actions – 릴리즈 μžλ™ μ‹€ν–‰
  • CHANGELOG μžλ™ 생성
  • 릴리즈 맀뉴얼 λ¬Έμ„œ 포함

πŸ“¦ μƒˆ ν”„λ‘œμ νŠΈ 생성 방법

방법 1 (ꢌμž₯)

npm init felix-devops

방법 2

npx create-felix-devops

πŸš€ 생성 ν›„ 초기 μ„ΈνŒ…

cd my-app
npm install
git init
git add .
git commit -m "chore: init"

(선택)

git remote add origin <YOUR_REPO>
git branch -M main
git push -u origin main

✍️ 컀밋 κ·œμΉ™ (κ°€μž₯ μ€‘μš”)

❌ git commit -m 직접 μ‚¬μš© κΈˆμ§€
βœ… 항상 Commitizen μ‚¬μš©

git add -A
npm run commit

μ§ˆλ¬Έμ— λ‹΅ν•˜λ©΄ ν‘œμ€€ 컀밋 λ©”μ‹œμ§€κ°€ μžλ™ μƒμ„±λ©λ‹ˆλ‹€.


πŸ“Œ 버전 μžλ™ μƒμŠΉ κ·œμΉ™ (SemVer)

Semantic ReleaseλŠ” 컀밋 νƒ€μž…μ„ 보고 버전을 κ²°μ •ν•©λ‹ˆλ‹€.

PATCH (버그 μˆ˜μ •) fix: something

MINOR (κΈ°λŠ₯ μΆ”κ°€) feat: something

MAJOR (ν˜Έν™˜ 깨짐) feat!: something λ˜λŠ” BREAKING CHANGE: something

μ˜ˆμ‹œ:

feat(auth): 둜그인 μΆ”κ°€ β†’ 1.1.0
fix(api): 였λ₯˜ μˆ˜μ • β†’ 1.1.1
feat!: API λ³€κ²½ β†’ 2.0.0


🌿 ꢌμž₯ 브랜치 μ „λž΅

feature/* β†’ main
λ˜λŠ”
feature/* β†’ dev β†’ main

μ€‘μš”:

πŸ‘‰ λ¦΄λ¦¬μ¦ˆλŠ” main λΈŒλžœμΉ˜μ—μ„œλ§Œ λ°œμƒ

main push = μžλ™ 릴리즈


πŸ”„ μ‹€μ œ 개발 흐름

  1. κΈ°λŠ₯ 개발

    git checkout -b feature/login
    npm run commit
  2. 병합

    git checkout main
    git merge feature/login
    git push
  3. 끝

GitHub Release μžλ™ 생성


πŸ§ͺ 릴리즈 미리보기 (선택)

npx semantic-release --dry-run

μ‹€μ œ 릴리즈 없이 버전/λ…ΈνŠΈλ§Œ 확인 κ°€λŠ₯


πŸ“‚ μƒμ„±λ˜λŠ” ν”„λ‘œμ νŠΈ ꡬ쑰

my-app/
- package.json
- .releaserc.json
- CHANGELOG.md
- docs/RELEASE_AUTOMATION.md
- .github/workflows/release.yml

❗ 자주 λ°œμƒν•˜λŠ” 문제

λ¦΄λ¦¬μ¦ˆκ°€ μ•ˆ 됨 β†’ 컀밋 λ©”μ‹œμ§€ κ·œμΉ™ μœ„λ°˜ (feat/fix μ‚¬μš© ν•„μˆ˜)

GitHub Actions μ‹€νŒ¨ β†’ permissions: contents: write ν•„μš”

template λˆ„λ½ β†’ npm publish 전에 files μ„€μ • 확인


🎯 운영 μ² ν•™

μž‘μ€ λ‹¨μœ„ 컀밋
μžλ™ν™” κ°€λŠ₯ν•œ 건 λͺ¨λ‘ μžλ™ν™”
λ¦΄λ¦¬μ¦ˆλŠ” μ‚¬λžŒμ΄ ν•˜μ§€ μ•ŠλŠ”λ‹€
main은 항상 배포 κ°€λŠ₯ μƒνƒœ μœ μ§€

Slow is smooth. Smooth is fast.

πŸ—οΈ κΈ°μ‘΄ ν”„λ‘œμ νŠΈμ— μ μš©ν•˜λŠ” 방법 (μˆ˜λ™ μ„€μ •)

이미 개발 쀑인 ν”„λ‘œμ νŠΈμ— 이 ν…œν”Œλ¦Ώμ˜ κΈ°λŠ₯을 μ μš©ν•˜λ €λ©΄ μ•„λž˜ 단계λ₯Ό λ”°λΌμ£Όμ„Έμš”.

1. νŒ¨ν‚€μ§€ μ„€μΉ˜

ν•„μš”ν•œ νŒ¨ν‚€μ§€λ“€μ„ 개발 μ˜μ‘΄μ„±(devDependencies)으둜 μ„€μΉ˜ν•©λ‹ˆλ‹€.

npm install -D commitizen cz-conventional-changelog semantic-release @semantic-release/commit-analyzer @semantic-release/release-notes-generator @semantic-release/github @semantic-release/git @semantic-release/changelog

2. package.json μ„€μ •

package.json νŒŒμΌμ— λ‹€μŒ λ‚΄μš©μ„ μΆ”κ°€ν•©λ‹ˆλ‹€.

{
  "scripts": {
    "commit": "cz"
  },
  "config": {
    "commitizen": {
      "path": "cz-conventional-changelog"
    }
  },
  "name": "{MY-APP}"
}

3. μ„€μ • 파일 생성

root κ²½λ‘œμ— .releaserc.json 생성:

{
  "branches": ["main"],
  "tagFormat": "v${version}",
  "plugins": [
    "@semantic-release/commit-analyzer",
    "@semantic-release/release-notes-generator",
    ["@semantic-release/changelog", { "changelogFile": "CHANGELOG.md" }],
    ["@semantic-release/github", { "assets": [] }],
    ["@semantic-release/git", {
      "assets": ["CHANGELOG.md"],
      "message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
    }]
  ]
}

root κ²½λ‘œμ— .github/workflows/release.yml 생성:

name: Release

on:
  push:
    branches:
      - main

permissions:
  contents: write
  issues: write
  pull-requests: write

jobs:
  release:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Setup Node
        uses: actions/setup-node@v4
        with:
          node-version: "20"
          cache: "npm"

      - name: Install dependencies
        run: npm ci

      - name: Run semantic-release
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: npx semantic-release

4. 적용 μ™„λ£Œ

이제 git add ., git commit ν›„ main λΈŒλžœμΉ˜μ— ν‘Έμ‹œν•˜λ©΄ 섀정이 μ™„λ£Œλ©λ‹ˆλ‹€. 이후 컀밋 μ‹œ npm run commit을 μ‚¬μš©ν•˜μ„Έμš”.


🏷️ 버전 뱃지 μ„€μ • 방법

이 ν…œν”Œλ¦Ώμ€ 기본적으둜 package.json 버전을 ν‘œμ‹œν•˜λŠ” 뱃지λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ GitHub Releases와 μ—°λ™λœ 뱃지λ₯Ό μ‚¬μš©ν•˜κ³  μ‹Άλ‹€λ©΄ μ•„λž˜ 두 κ°€μ§€ μ˜΅μ…˜ 쀑 선택할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ˜΅μ…˜ 1: package.json 버전 ν‘œμ‹œ (κΈ°λ³Έκ°’, μ¦‰μ‹œ 반영)

ν˜„μž¬ μ½”λ“œμ˜ package.json에 λͺ…μ‹œλœ 버전을 λ³΄μ—¬μ€λ‹ˆλ‹€. λ¦΄λ¦¬μ¦ˆκ°€ 없어도 버전이 λ³΄μž…λ‹ˆλ‹€.

[![Version](https://img.shields.io/github/package-json/v/rexfelix/felix-devops)](https://github.com/rexfelix/felix-devops)

μ˜΅μ…˜ 2: GitHub Release 버전 ν‘œμ‹œ (릴리즈 ν›„ μž‘λ™)

μ‹€μ œλ‘œ GitHub에 Releaseκ°€ μƒμ„±λœ λ²„μ „λ§Œ λ³΄μ—¬μ€λ‹ˆλ‹€. (Tagκ°€ μ—†μœΌλ©΄ no release둜 뜰 수 있음)

[![Release](https://img.shields.io/github/v/release/rexfelix/felix-devops?label=version)](https://github.com/rexfelix/felix-devops/releases)

βœ… ν•œ 쀄 μš”μ•½

κ°œλ°œμžλŠ”
μ½”λ“œ μž‘μ„± + commit + merge

λ‚˜λ¨Έμ§€λŠ”
μ „λΆ€ μžλ™

πŸ‘‰ 이것이 νšŒμ‚¬κΈ‰ DevOps μ›Œν¬ν”Œλ‘œμš°


License

MIT

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published