Release Branch — bu, müəyyən bir buraxılışı yayımlamağa hazırlamaq üçün develop-dan yaradılan Git Flow budağıdır. Burada tətbiqin versiyası təsbit edilir, son səhvlər düzəldilir və metadata yenilənir — yeni funksiyalar əlavə etmədən. Vincent Driessen, 2010-a görə, release budağı buraxılışın hazırlanmasını cari inkişafdan ayırır ki, bu da hər iki fəaliyyəti paralel aparmağa imkan verir.
Əsas məqamlar
release/X.Y.Z tətbiq versiyasına uyğun.Release Branch (buraxılış budağı) — bu, komanda cari funksiyalar dəstinin buraxılışa hazır olduğuna qərar verdikdə develop-dan yaradılan Git Flow-da müvəqqəti budaqdır. Buraxılışın son hazırlığı nə qədər davam edirsə, o qədər mövcuddur — bir neçə saatdan bir neçə günə qədər.
Release budağının əsas məqsədi — növbəti versiyaların inkişafını dayandırmadan buraxılış üçün müəyyən funksiyalar dəstini dondurmaqdır. Release budağı buraxılışa hazırlaşarkən, digər tərtibatçılar növbəti buraxılış üçün feature budaqlarını develop-a birləşdirməyə davam edə bilərlər.
Release budağında yeni funksiyalar yaradılmır — yalnız səhv düzəlişləri, tətbiq versiyasının yenilənməsi, lokallaşdırma və sənədlər. Bütün işlər tamamlandıqdan sonra release budağı main-ə birləşdirilir (buraxılış kimi qeyd olunur) və geri develop-a (səhv düzəlişlərinin gələcək versiyalara daxil olması üçün).
Atlassian, 2024-ə görə, release budaqları müntəzəm buraxılış dövrləri olan layihələr üçün kritik əhəmiyyətlidir — onlar buraxılış prosesinin proqnozlaşdırıla bilməsini və sabitliyini təmin edir.
Həyat dövrü — release budağının yaradılmasından silinməsinə qədər bir neçə mərhələni əhatə edir. Hər bir mərhələni başa düşmək komandaya hərəkətləri sinxronlaşdırmağa və səhvlərdən qaçmağa kömək edir.
release/2.5.0 adlı budaq yaradılır. develop növbəti versiya üçün feature budaqlarını qəbul etməyə davam edir.v2.5.0.6-cı bənd — develop-a geri birləşmə — tez-tez unudulur, lakin kritik əhəmiyyətlidir. Onsuz release-də edilən səhv düzəlişləri develop-a daxil olmaz və növbəti buraxılışda eyni səhvlər yenidən üzə çıxa bilər.
Release budağının ömrü buraxılışın mürəkkəbliyindən və develop-da kodun keyfiyyətindən asılıdır. Orta ölçülü mobil tətbiq üçün hazırlıq adətən 2-5 iş günü çəkir.
Release budağında ciddi məhdud tapşırıqlar dəsti yerinə yetirilir. Bu siyahıdan hər hansı bir kənarlaşma Git Flow modelini pozur və buraxılışın sabitliyi üçün risklər yaradır.
| Dəyişiklik növü | İcazə verilir | Nümunə |
|---|---|---|
| Versiyalama | Bəli | build.gradle-da versionName-in yenilənməsi |
| Səhv düzəlişləri | Bəli | Başlanğıcda crash-in düzəldilməsi |
| Lokallaşdırma | Bəli | Yeni ekranlar üçün tərcümələrin əlavə edilməsi |
| Sənədlər | Bəli | CHANGELOG və README-nin yenilənməsi |
| Yeni funksiyalar | Xeyr | Yeni profil ekranının əlavə edilməsi |
| Refaktorinq | Xeyr | Şəbəkə qatının yenidən yazılması |
| Kitabxanaların yenilənməsi | Ehtiyatlı | Yalnız səhv düzəlişləri üçün patch versiyaları |
Yeni funksiyaların qadağası qaydası — release budağında ən vacib qaydadır. Əgər funksiya buraxılışa çatmayıbsa, növbəti dövrü gözləyir. Yarımçıq funksiyanı release budağına keçirmək cəhdi — son tarixlərin pozulmasının və istehsalatda səhvlərin əsas səbəbidir.
Release budağında tətbiq versiyasının nömrəsi mütləq yenilənir. Android üçün bunlar build.gradle-da versionCode və versionName sahələri, iOS üçün — Info.plist-də CFBundleShortVersionString-dir.
// build.gradle (app-level) — release budağında versiyanın yenilənməsi
android {
defaultConfig {
versionCode 42
versionName "2.5.0"
}
}
// iOS üçün — Info.plist-in yenilənməsi
// CFBundleShortVersionString = 2.5.0
// CFBundleVersion = 42
Təcrübəsiz tərtibatçılar tez-tez release və hotfix budaqlarını qarışdırırlar, baxmayaraq ki, onların məqsədi prinsipial olaraq fərqlidir. Budaq növünü seçməkdə səhv kritik düzəlişin gecikməsinə və ya buraxılış prosesinin pozulmasına səbəb ola bilər.
Əgər səhv buraxılışın hazırlanması prosesində (release budağında) aşkar edilibsə — bu adi səhv düzəlişidir. Əgər səhv istehsalatda (main-də) aşkar edilibsə — bu hotfix-dir və release budağı artıq mövcud olsa belə, main-dən yaradılır.
Vahid release budaqlarının adlandırma standartı repozitoriyada naviqasiyanı asanlaşdırır və CI/CD sistemlərinə budağın buraxılış prosesinə aid olduğunu avtomatik müəyyən etməyə imkan verir.
release/2.5.0.release/merlin.release/2024-12-01.release/X.Y.Z formatı — üstünlük verilən, çünki budağı buraxılışa təyin ediləcək versiya nömrəsi ilə açıq şəkildə əlaqələndirir. Bu, axtarışı və CI/CD skriptləri ilə avtomatik emalı asanlaşdırır.
Geri birləşmə (merge back) release budağının develop-a — ən vacib və eyni zamanda tez-tez buraxılan əməliyyatlardan biridir. Onsuz release-də edilən bütün səhv düzəlişləri yalnız buraxılış versiyasında qalacaq və növbəti buraxılış dövrünə daxil olmayacaq.
Geri birləşmə prosesi release budağı artıq main-ə birləşdirildikdən sonra yerinə yetirilir. Əvvəlcə release develop-a birləşdirilir, sonra — silinir. Bu, develop-ın buraxılışın hazırlanması prosesində edilən bütün düzəlişləri ehtiva etməsini təmin edir.
Geri birləşmədən sonra münaqişələr mümkündür — xüsusilə develop-da eyni faylları dəyişdirən yeni feature budaqları yaranıbsa. Buraxılışa cavabdeh olan tərtibatçı bu münaqişələri həll edir və develop-ı serverə göndərir.
Bəzi komandalar geri birləşmə üçün merge əvəzinə rebase istifadə edir ki, tarix xətti qalsın. Bununla belə, merge develop üçün daha təhlükəsizdir, çünki digər tərtibatçılar tərəfindən artıq istifadə edilmiş commit tarixini yenidən yazmır.
Release budağı ilə tam iş dövrünə baxaq: 2.5.0 versiyalı mobil tətbiqin uğurlu buraxılışından sonra yaradılmadan silinməyə qədər.
# 1. Develop-dan release budağının yaradılması
git checkout develop
git pull origin develop
git checkout -b release/2.5.0
# 2. Versiyanın yenilənməsi və səhv düzəlişləri
git add build.gradle
git commit -m "Bump version to 2.5.0"
# 3. Səhvlərin düzəldilməsi (yalnız bugfixes)
git add src/fix/
git commit -m "Fix crash on payment screen"
# 4. Release budağının serverə göndərilməsi
git push origin release/2.5.0
# 5. Release-in main-ə birləşdirilməsi
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-a geri birləşmə
git checkout develop
git merge --no-ff release/2.5.0
git push origin develop
# 7. Release budağının silinməsi
git branch -d release/2.5.0
git push origin --delete release/2.5.0
5 və 6-cı əmrlər — ikiqat birləşmə — kritik əhəmiyyətlidir. Əvvəlcə main buraxılış kodunu və teqi alır, sonra develop release-dən səhv düzəlişləri ilə sinxronlaşır. 6-cı addım buraxılıbsa, release-dən düzəlişlər növbəti inkişaf dövrünə daxil olmayacaq.
Müntəzəm buraxılışları olan mobil layihələr üçün release budağının yaradılması və versiyanın yenilənməsi prosesi CI/CD skriptləri vasitəsilə avtomatlaşdırıla bilər. GitHub Actions düyməni basdıqda avtomatik versiya yeniləməsi ilə release budağı yaradan workflow yaratmağa imkan verir.
Müntəzəm buraxılışları olan mobil layihələr üçün release budağının yaradılması və versiyanın yenilənməsi prosesi CI/CD skriptləri vasitəsilə avtomatlaşdırıla bilər. GitHub Actions düyməni basdıqda avtomatik versiya yeniləməsi ilə release budağı yaradan workflow yaratmağa imkan verir.
# GitHub Actions — release budağının yaradılmasının avtomatlaşdırılması
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 verilən suallar
Git Flow-a əməl edirsinizsə, eyni anda yalnız bir release budağı ola bilər. İki aktiv release budağının olması komandanın iki buraxılışı paralel buraxmağa çalışdığını göstərir — bu, ardıcıl buraxılış prinsipini pozur və versiyalarla qarışıqlıq yaradır.
git revert vasitəsilə release budağından bitməmiş funksiyanın commit-lərini silin və funksiyanı növbəti buraxılışa qədər təxirə salın. Heç vaxt yarımçıq funksionallığı istehsalata buraxmayın — texniki borc və potensial səhvlər tələsməyə dəyməz.
Bir düzəlişli sadə buraxılışlar üçün release budağını keçib birbaşa develop-dan main-ə birləşmə edə bilərsiniz. Lakin standart buraxılışlar üçün release budağı məcburidir — versiyanı təsbit edir, hazırlığı təcrid edir və səhv düzəlişlərinin ikiqat birləşməsini təmin edir.
Main-də buraxılışın bütün dəyişikliklərini ləğv edən yeni commit yaratmaq üçün git revert istifadə edin. Sonra git push origin --delete vX.Y.Z əmri ilə buraxılış teqini silin. Problemləri düzəltdikdən sonra artırılmış patch nömrəsi ilə yeni release budağı yaradın.
Release candidate (RC) — son testdən keçən kompilyasiya artefaktıdır. Release branch — release candidate-in yaradıldığı Git budağıdır. Bir release budağı səhvlər düzəldildikcə bir neçə RC kompilyasiyası (RC1, RC2 və s.) yarada bilər.
Nəticə
release/X.Y.Z.Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun