GitHub Releases — versiya chiqarish, changelog
Muammodan boshlaylik
Siz CLI vosita yozdingiz — dokon-cli. Foydalanuvchilar so'raydi:
- "Eng yangi versiya qaysi?"
- "2.4 dan 2.5 ga o'tsam nima o'zgaradi? Nima buziladi?"
- "Windows uchun tayyor
.exeqayerda? Men Go o'rnatmaganman."
Git teg (36-dars) — faqat commit ga nom. Unda tavsif sahifasi yo'q, yuklab olinadigan fayllar yo'q. Foydalanuvchilarga kerak — reliz sahifasi. Bu — GitHub Release.
Release nima?
Release — Git teg ustiga qurilgan GitHub sahifasi:
- Teg — qaysi commit (
v2.5.0) - Sarlavha — "v2.5.0 — Kategoriya filtri"
- Tavsif — nima yangi, nima tuzatildi, nima buzildi (Markdown)
- Assets — yuklab olinadigan fayllar: binarlar, arxivlar, installer lar
- Avtomatik: manba kod arxivi (
.zip,.tar.gz)
Repozitoriy sahifasining o'ng tomonida — Releases bo'limi va "Latest" belgisi. https://github.com/otabek/dokon/releases/latest — doim eng yangisi.
Qo'lda release yaratish
Repozitoriy → Releases → Draft a new release:
- Choose a tag — mavjud tegni tanlang (
v2.5.0) yoki yangisini yozing (GitHub yaratadi) - Target — qaysi branch (odatda
main) - Title —
v2.5.0yokiv2.5.0 — Kategoriya filtri - Generate release notes tugmasi — GitHub oldingi relizdan beri merge qilingan PR larni avtomatik ro'yxatlaydi
- Fayllarni sudrab tashlang (assets)
- Belgilar:
- Set as a pre-release — beta, rc (35-dars)
- Set as the latest release
- Publish release (yoki Save draft)
Yaxshi reliz tavsifi
## ✨ Yangi imkoniyatlar
- Mahsulotlarni kategoriya bo'yicha filtrlash (#87) — @malika
- Savatda miqdorni tez o'zgartirish tugmalari (#91)
## 🐛 Tuzatishlar
- Savatda manfiy miqdor kiritish taqiqlandi (#42)
- Payme: 1 so'mlik yaxlitlash xatosi (#95)
## ⚠️ Buzuvchi o'zgarishlar
- `GET /api/products` o'rniga `GET /api/mahsulotlar`. Eski endpoint 3.0 da o'chiriladi.
## 📦 Yangilash
npm install dokon-cli@2.5.0
**To'liq o'zgarishlar:** https://github.com/otabek/dokon/compare/v2.4.1...v2.5.0
Foydalanuvchi uchun eng muhimi — buzuvchi o'zgarishlar va yangilash yo'riqnomasi. Ularni aniq va ko'rinadigan joyda yozing.
Avtomatik reliz eslatmalari
.github/release.yml — "Generate release notes" ni PR yorliqlari (25-dars) bo'yicha guruhlash:
changelog:
exclude:
labels: [ignore-for-release]
categories:
- title: ✨ Yangi imkoniyatlar
labels: [enhancement, feature]
- title: 🐛 Tuzatishlar
labels: [bug]
- title: 📚 Hujjatlar
labels: [documentation]
- title: Boshqalar
labels: ["*"]
Terminaldan: gh release
gh release create v2.5.0 --generate-notes
gh release create v2.5.0 --title "v2.5.0" --notes-file CHANGELOG-2.5.0.md
gh release create v2.5.0 ./dist/*.zip --generate-notes # fayllar bilan
gh release create v3.0.0-beta.1 --prerelease --generate-notes
gh release list
gh release view v2.5.0
gh release download v2.5.0 # fayllarni yuklab olish
(GitHub CLI — 54-dars.)
Avtomatik reliz — GitHub Actions
Teg push qilinganda: build → fayllar → reliz.
# .github/workflows/release.yml
name: Release
on:
push:
tags: ["v*"]
permissions:
contents: write
jobs:
release:
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 run build
- run: tar -czf dokon-${{ github.ref_name }}.tar.gz -C dist .
- name: Release yaratish
env:
GH_TOKEN: ${{ github.token }}
run: |
gh release create ${{ github.ref_name }} \
dokon-${{ github.ref_name }}.tar.gz \
--generate-notes \
--verify-tag
npm version minor && git push --follow-tags # → v2.5.0 → reliz avtomatik
To'liq avtomatlashtirish: release-please
Conventional Commits (34-dars) bilan release-please (Google) yoki semantic-release butun jarayonni o'z zimmasiga oladi:
maingafeat:vafix:commitlar tushadi- Vosita avtomatik "Release PR" ochadi: versiyani hisoblaydi (
fix→ PATCH,feat→ MINOR),CHANGELOG.mdvapackage.jsonni yangilaydi - Siz Release PR ni merge qilasiz → teg + GitHub Release avtomatik yaratiladi
# .github/workflows/release-please.yml
on:
push:
branches: [main]
permissions:
contents: write
pull-requests: write
jobs:
release-please:
runs-on: ubuntu-latest
steps:
- uses: googleapis/release-please-action@v4
with:
release-type: node
Hech kim versiya raqamini o'ylamaydi va CHANGELOG ni qo'lda yozmaydi.
Releases va boshqa joylar
| Joy | Nima uchun |
|---|---|
| GitHub Release | Odamlar uchun: tavsif, yuklab olish |
| npm / PyPI / Packagist | Paket menejerlari uchun (43-dars) |
| Docker registry | Image lar (Docker kursi, 38-dars) |
| CHANGELOG.md | Repozitoriy ichida, kod bilan birga (35-dars) |
Ko'pincha bitta workflow hammasini birdaniga yangilaydi.
Bildirishnomalar
Foydalanuvchilar repozitoriyda Watch → Custom → Releases ni tanlab, faqat yangi relizlar haqida xabar olishi mumkin. Dependabot ham relizlaringizni kuzatib, bog'liq loyihalarga yangilash PR lari ochadi.
Nima uchun shunday?
Nima uchun CHANGELOG va reliz eslatmalari shunchalik muhim — kim o'qiydi ularni?
Ular yangilash qarorini qabul qiladigan har bir kishi uchun yozilgan. Sizning kutubxonangizdan foydalanuvchi dasturchi 2.4 → 2.5 ga yangilashdan oldin bitta savol beradi: "Bu meni buzadimi va menga nima beradi?" Yaxshi reliz eslatmasi bunga 30 soniyada javob beradi. Eslatma bo'lmasa — u yo diff larni o'qib soatlab vaqt sarflaydi, yo yangilamaydi (va xavfsizlik tuzatishlaridan mahrum qoladi), yo ko'r-ko'rona yangilab, production da buzilishga uchraydi. Reliz eslatmasi — loyihangizga bo'lgan ishonchning asosi, va ochiq kodli loyihalarda u kod sifatichalik muhim.
Xulosa
Eslab qoling:
- Release — teg + tavsif + yuklab olinadigan fayllar (GitHub sahifasi)
- Releases → Draft a new release → teg → "Generate release notes" → Publish
- Tavsif: yangiliklar, tuzatishlar, buzuvchi o'zgarishlar, yangilash yo'riqnomasi
.github/release.yml— eslatmalarni yorliqlar bo'yicha guruhlashgh release create v2.5.0 --generate-notes [fayllar]- Actions:
on: push: tags: ["v*"]→ build →gh release create - release-please / semantic-release — Conventional Commits dan to'liq avtomatik relizlar
- Pre-release — beta va rc versiyalar uchun
Keyingi dars
42-dars: GitHub Projects — loyiha boshqarish, Kanban board