Release Branch — bu Git Flow-dagi shoxcha bo'lib, ma'lum bir relizni chiqarishga tayyorlash uchun develop-dan yaratiladi. Unda ilova versiyasi mustahkamlanadi, so'nggi xatolar tuzatiladi va metamaʼlumotlar yangilanadi — yangi funksiyalar qo'shilmagan holda. Vincent Driessen, 2010 maʼlumotlariga ko'ra, release shoxchasi reliz tayyorlashni joriy ishlanmadan ajratadi, bu ikkala faoliyatni parallel olib borishga imkon beradi.
Asosiy fikrlar
release/X.Y.Z ilova versiyasiga ko'ra.Release Branch (reliz shoxchasi) — bu Git Flow-dagi vaqtinchalik shoxcha bo'lib, jamoa joriy funksiyalar to'plami chiqarishga tayyor deb qaror qilganda develop-dan yaratiladi. U relizning yakuniy tayyorgarligi qancha davom etsa, shuncha mavjud bo'ladi — bir necha soatdan bir necha kungacha.
Release shoxchasining asosiy maqsadi — keyingi versiyalar ishlanmasini to'xtatmasdan, reliz uchun ma'lum funksiyalar to'plamini muzlatishdir. Release shoxchasi chiqarishga tayyorlanayotganda, boshqa ishlab chiqaruvchilar keyingi reliz uchun feature shoxchalarini develop-ga birlashtirishni davom ettirishlari mumkin.
Release shoxchasida yangi funksiyalar yaratilmaydi — faqat xato tuzatishlar, ilova versiyasini yangilash, lokalizatsiya va hujjatlar. Barcha ishlar tugagach, release shoxchasi main-ga birlashtiriladi (reliz sifatida belgilanadi) va qaytib develop-ga (xato tuzatishlar kelajak versiyalarga o'tishi uchun).
Atlassian, 2024 maʼlumotlariga ko'ra, release shoxchalari muntazam reliz sikliga ega loyihalar uchun muhim ahamiyatga ega — ular chiqarish jarayonining bashorat qilish mumkinligi va barqarorligini taʼminlaydi.
Hayot sikli — release shoxchasining yaratilishdan o'chirilishgacha bo'lgan bir necha bosqichni o'z ichiga oladi. Har bir bosqichni tushunish jamoaga harakatlarni muvofiqlashtirish va xatolardan qochishga yordam beradi.
release/2.5.0 nomli shoxcha yaratiladi. develop keyingi versiya uchun feature shoxchalarini qabul qilishni davom ettiradi.v2.5.0.6-band — develop-ga qaytib birlashish — ko'pincha unutiladi, lekin bu juda muhim. Usiz release-da qilingan xato tuzatishlar develop-ga o'tmaydi va keyingi relizda xuddi shu xatolar yana paydo bo'lishi mumkin.
Release shoxchasining umri relizning murakkabligi va develop-dagi kod sifatiga bog'liq. O'rtacha o'lchamdagi mobil ilova uchun tayyorgarlik odatda 2 dan 5 ish kunigacha davom etadi.
Release shoxchasida qat'iy cheklangan vazifalar to'plami bajariladi. Ushbu ro'yxatdan har qanday chetga chiqish Git Flow modelini buzadi va reliz barqarorligi uchun xavf tug'diradi.
| O'zgarish turi | Ruxsat etilgan | Misol |
|---|---|---|
| Versiyalash | Ha | build.gradle da versionName ni yangilash |
| Xato tuzatishlar | Ha | Ishga tushirishdagi crash ni tuzatish |
| Lokalizatsiya | Ha | Yangi ekranlar uchun tarjimalar qo'shish |
| Hujjatlar | Ha | CHANGELOG va README ni yangilash |
| Yangi funksiyalar | Yo'q | Yangi profil ekranini qo'shish |
| Refaktoring | Yo'q | Tarmoq qatlamini qayta yozish |
| Kutubxonalarni yangilash | Ehtiyot bilan | Faqat xato tuzatishlar uchun patch versiyalar |
Yangi funksiyalarni taqiqlash qoidasi — release shoxchasidagi eng muhim qoida. Agar funksiya relizga ulgurmagan bo'lsa, keyingi siklini kutadi. Tugallanmagan funksiyani release shoxchasiga kiritish urinishi — muddatlarni buzish va ishlab chiqarishdagi xatolarning asosiy sababidir.
Release shoxchasida ilova versiyasining raqami majburiy ravishda yangilanadi. Android uchun bu build.gradle dagi versionCode va versionName maydonlari, iOS uchun — Info.plist dagi CFBundleShortVersionString.
// build.gradle (app-level) — release shoxchasida versiyani yangilash
android {
defaultConfig {
versionCode 42
versionName "2.5.0"
}
}
// iOS uchun — Info.plist ni yangilash
// CFBundleShortVersionString = 2.5.0
// CFBundleVersion = 42
Boshlang'ich ishlab chiqaruvchilar ko'pincha release va hotfix shoxchalarini chalkashtirishadi, garchi ularning maqsadi tubdan farq qilsa. Shoxcha turini tanlashdagi xato muhim tuzatishning kechikishiga yoki reliz jarayonining buzilishiga olib kelishi mumkin.
Agar xato relizni tayyorlash jarayonida (release shoxchasida) topilgan bo'lsa — bu oddiy xato tuzatish. Agar xato ishlab chiqarishda (main da) topilgan bo'lsa — bu hotfix va u main-dan yaratiladi, hatto release shoxchasi mavjud bo'lsa ham.
Yagona release shoxchalarini nomlash standarti repozitoriy bo'ylab navigatsiyani soddalashtiradi va CI/CD tizimlariga shoxchaning reliz jarayoniga tegishli ekanligini avtomatik aniqlashga imkon beradi.
release/2.5.0.release/merlin.release/2024-12-01.release/X.Y.Z formati — afzal ko'riladi, chunki u shoxchani relizga tayinlanadigan versiya raqami bilan aniq bog'laydi. Bu qidirish va CI/CD skriptlari bilan avtomatik ishlov berishni soddalashtiradi.
Qaytib birlashish (merge back) release shoxchasini develop-ga — eng muhim va bir vaqtning o'zida tez-tez o'tkazib yuboriladigan operatsiyalardan biridir. Usiz release-da qilingan barcha xato tuzatishlar faqat reliz versiyasida qoladi va keyingi reliz sikliga o'tmaydi.
Qaytib birlashish jarayoni release shoxchasi allaqachon main-ga birlashtirilganidan so'ng amalga oshiriladi. Avval release develop-ga birlashtiriladi, keyin — o'chiriladi. Bu develop relizni tayyorlash jarayonida qilingan barcha tuzatishlarni o'z ichiga olishini kafolatlaydi.
Qaytib birlashishdan so'ng konfliktlar yuzaga kelishi mumkin — ayniqsa develop-da bir xil fayllarni o'zgartirgan yangi feature shoxchalari paydo bo'lgan bo'lsa. Reliz uchun mas'ul ishlab chiqaruvchi bu konfliktlarni hal qiladi va develop-ni serverga yuboradi.
Ba'zi jamoalar qaytib birlashish uchun merge o'rniga rebase dan foydalanadi, shunda tarix chiziqli bo'ladi. Biroq merge develop uchun xavfsizroq, chunki boshqa ishlab chiqaruvchilar tomonidan allaqachon ishlatilgan commitlar tarixini qayta yozmaydi.
Release shoxchasi bilan to'liq ishlash siklini ko'rib chiqaylik: 2.5.0 versiyali mobil ilovaning muvaffaqiyatli relizidan so'ng yaratishdan o'chirishgacha.
# 1. Develop-dan release shoxchasini yaratish
git checkout develop
git pull origin develop
git checkout -b release/2.5.0
# 2. Versiyani yangilash va xato tuzatishlar
git add build.gradle
git commit -m "Bump version to 2.5.0"
# 3. Xatolarni tuzatish (faqat bugfixes)
git add src/fix/
git commit -m "Fix crash on payment screen"
# 4. Release shoxchasini serverga yuborish
git push origin release/2.5.0
# 5. Release ni main-ga birlashtirish
git checkout main
git pull origin main
git merge --no-ff release/2.5.0
git tag -a v2.5.0 -m "Release 2.5.0"
git push origin main --tags
# 6. Develop-ga qaytib birlashish
git checkout develop
git merge --no-ff release/2.5.0
git push origin develop
# 7. Release shoxchasini o'chirish
git branch -d release/2.5.0
git push origin --delete release/2.5.0
5 va 6-buyruqlar — ikki tomonlama birlashish — juda muhim. Avval main reliz kodini va tegni oladi, keyin develop release-dagi xato tuzatishlar bilan sinxronlanadi. Agar 6-qadam o'tkazib yuborilsa, relizdagi tuzatishlar keyingi ishlanma siklga o'tmaydi.
Muntazam relizlarga ega mobil loyihalar uchun release shoxchasini yaratish va versiyani yangilash jarayoni CI/CD skriptlari orqali avtomatlashtirilishi mumkin. GitHub Actions tugmani bosganda avtomatik versiya yangilanishi bilan release shoxchasini yaratadigan workflow yaratishga imkon beradi.
Muntazam relizlarga ega mobil loyihalar uchun release shoxchasini yaratish va versiyani yangilash jarayoni CI/CD skriptlari orqali avtomatlashtirilishi mumkin. GitHub Actions tugmani bosganda avtomatik versiya yangilanishi bilan release shoxchasini yaratadigan workflow yaratishga imkon beradi.
# GitHub Actions — release shoxchasini yaratishni avtomatlashtirish
name: Create Release Branch
on:
workflow_dispatch:
inputs:
version:
description: 'Release version (e.g. 2.5.0)'
required: true
jobs:
create-release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Create release branch
run: |
git checkout develop
git checkout -b release/${{ inputs.version }}
git push origin release/${{ inputs.version }}
Tez-tez beriladigan savollar
Git Flow-ga rioya qilsangiz, bir vaqtning o'zida faqat bitta release shoxchasi bo'lishi mumkin. Ikki faol release shoxchasining mavjudligi jamoa ikkita relizni parallel chiqarishga urinayotganini anglatadi — bu ketma-ket relizlar prinsipini buzadi va versiyalar bilan chalkashlik yaratadi.
git revert orqali release shoxchasidan tugallanmagan funksiyaning commitlarini olib tashlang va funksiyani keyingi relizga qoldiring. Hech qachon tugallanmagan funksiyani ishlab chiqarishga chiqarmang — texnik qarz va potentsial xatolar shoshilishga arzimaydi.
Bitta tuzatishga ega oddiy relizlar uchun release shoxchasini o'tkazib yuborib, to'g'ridan-to'g'ri develop-dan main-ga birlashish mumkin. Biroq standart relizlar uchun release shoxchasi majburiy — versiyani mustahkamlaydi, tayyorgarlikni izolyatsiya qiladi va xato tuzatishlarning ikki tomonlama birlashishini taʼminlaydi.
Main-da relizning barcha o'zgarishlarini bekor qiladigan yangi commit yaratish uchun git revert dan foydalaning. So'ngra git push origin --delete vX.Y.Z buyrug'i bilan reliz tegini o'chiring. Muammolarni tuzatgandan so'ng, oshirilgan patch raqami bilan yangi release shoxchasini yarating.
Release candidate (RC) — yakuniy testdan o'tadigan kompilyatsiya artefaktidir. Release branch — bu release candidate yaratiladigan Git shoxchasidir. Bitta release shoxchasi xatolar tuzatilgan sari bir nechta RC kompilyatsiyalarini (RC1, RC2 va h.k.) yaratishi mumkin.
Xulosa
release/X.Y.Z.Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.