A customized DevOps project generator CLI. This tool scaffolds a new project with pre-configured DevOps tools, including Semantic Release and GitHub Actions.
You can use this package directly with npx:
npx create-felix-devopsOr install it globally:
npm install -g create-felix-devopsRun the following command and follow the interactive prompts to create a new project:
npx create-felix-devops- 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/)
- Semantic Release (
μ΄ νλ‘μ νΈλ μ νλ‘μ νΈλ₯Ό μμν λ DevOps/Release μλνλ₯Ό ν λ²μ μΈν ν΄μ£Όλ μ€νν° ν νλ¦Ώ μμ±κΈ°μ λλ€.
λͺ©νλ λ¨ νλμ λλ€.
π main λΈλμΉμ merge/pushλ§ νλ©΄ λ²μ Β· νκ·Έ Β· CHANGELOG Β· GitHub Releaseκ° μλ μμ±λκ² λ§λ λ€
μ¦,
- μλ λ²μ κ΄λ¦¬ β
- μλ λ¦΄λ¦¬μ¦ λ ΈνΈ β
- μλ νκ·Έ β
- μλ GitHub Release β
β‘ μ λΆ μλν β
νλ‘μ νΈ μμ± μ μλ ν¬ν¨:
- Commitizen (cz) β μ»€λ° λ©μμ§ νμ€ν
- Semantic Release β λ²μ μλ κ³μ°
- GitHub Actions β λ¦΄λ¦¬μ¦ μλ μ€ν
- CHANGELOG μλ μμ±
- λ¦΄λ¦¬μ¦ λ§€λ΄μΌ λ¬Έμ ν¬ν¨
npm init felix-devopsnpx create-felix-devopscd 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μ§λ¬Έμ λ΅νλ©΄ νμ€ μ»€λ° λ©μμ§κ° μλ μμ±λ©λλ€.
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 = μλ 릴리μ¦
-
κΈ°λ₯ κ°λ°
git checkout -b feature/login npm run commit
-
λ³ν©
git checkout main git merge feature/login git push
-
λ
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.
μ΄λ―Έ κ°λ° μ€μΈ νλ‘μ νΈμ μ΄ ν νλ¦Ώμ κΈ°λ₯μ μ μ©νλ €λ©΄ μλ λ¨κ³λ₯Ό λ°λΌμ£ΌμΈμ.
νμν ν¨ν€μ§λ€μ κ°λ° μμ‘΄μ±(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/changelogpackage.json νμΌμ λ€μ λ΄μ©μ μΆκ°ν©λλ€.
{
"scripts": {
"commit": "cz"
},
"config": {
"commitizen": {
"path": "cz-conventional-changelog"
}
},
"name": "{MY-APP}"
}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μ΄μ git add ., git commit ν main λΈλμΉμ νΈμνλ©΄ μ€μ μ΄ μλ£λ©λλ€.
μ΄ν μ»€λ° μ npm run commitμ μ¬μ©νμΈμ.
μ΄ ν
νλ¦Ώμ κΈ°λ³Έμ μΌλ‘ package.json λ²μ μ νμνλ λ±μ§λ₯Ό μ¬μ©ν©λλ€.
νμ§λ§ GitHub Releasesμ μ°λλ λ±μ§λ₯Ό μ¬μ©νκ³ μΆλ€λ©΄ μλ λ κ°μ§ μ΅μ
μ€ μ νν μ μμ΅λλ€.
νμ¬ μ½λμ package.jsonμ λͺ
μλ λ²μ μ 보μ¬μ€λλ€. 릴리μ¦κ° μμ΄λ λ²μ μ΄ λ³΄μ
λλ€.
[](https://github.com/rexfelix/felix-devops)μ€μ λ‘ GitHubμ Releaseκ° μμ±λ λ²μ λ§ λ³΄μ¬μ€λλ€. (Tagκ° μμΌλ©΄ no releaseλ‘ λ° μ μμ)
[](https://github.com/rexfelix/felix-devops/releases)κ°λ°μλ
μ½λ μμ± + commit + merge
λλ¨Έμ§λ
μ λΆ μλ
π μ΄κ²μ΄ νμ¬κΈ DevOps μν¬νλ‘μ°
MIT