Release Branch — ay isang branch sa Git Flow na ginawa mula sa develop upang ihanda ang isang partikular na release. Dito itinatakda ang bersyon ng application, inaayos ang mga huling bug, at ina-update ang metadata — nang walang pagdaragdag ng mga bagong feature. Ayon kay Vincent Driessen, 2010, inihihiwalay ng release branch ang paghahanda ng release mula sa kasalukuyang development, na nagpapahintulot sa parehong aktibidad na maisagawa nang magkasabay.
Mga Pangunahing Punto
release/X.Y.Z ayon sa bersyon ng application.Release Branch (branch ng release) — ay isang pansamantalang branch sa Git Flow, na ginawa mula sa develop kapag nagpasya ang team na ang kasalukuyang set ng mga feature ay handa na para sa pag-release. Ito ay umiiral hangga't tumatagal ang huling paghahanda ng release — mula ilang oras hanggang ilang araw.
Ang pangunahing layunin ng release branch — i-freeze ang isang partikular na set ng mga feature para sa release, nang hindi humihinto sa pag-develop ng mga susunod na bersyon. Habang ang release branch ay inihahanda para ilabas, ang ibang developer ay maaaring magpatuloy sa pagsasama ng mga feature branch sa develop para sa susunod na release.
Sa release branch ay hindi ginagawa ang mga bagong feature — mga pag-aayos lamang ng bug, pag-update ng bersyon ng application, lokalisasyon, at dokumentasyon. Pagkatapos ng lahat ng gawain, ang release branch ay isinasama sa main (minarkahan bilang release) at pabalik sa develop (upang ang mga pag-aayos ng bug ay pumasok sa mga susunod na bersyon).
Ayon sa Atlassian, 2024, ang mga release branch ay kritikal para sa mga proyektong may regular na release cycle — tinitiyak nila ang predictability at stability ng proseso ng pag-release.
Siklo ng buhay ng release branch mula sa paggawa hanggang sa pagtanggal ay may kasamang ilang yugto. Ang pag-unawa sa bawat yugto ay tumutulong sa team na i-synchronize ang mga aksyon at maiwasan ang mga pagkakamali.
release/2.5.0. Ang develop ay patuloy na tumatanggap ng mga feature branch para sa susunod na bersyon.v2.5.0.Ang punto 6 — pabalik na pagsasama sa develop — ay madalas nakakalimutan, ngunit ito ay kritikal. Kung wala ito, ang mga pag-aayos ng bug na ginawa sa release ay hindi papasok sa develop, at sa susunod na release ang parehong mga pagkakamali ay maaaring lumitaw muli.
Ang haba ng buhay ng release branch ay depende sa pagiging kumplikado ng release at kalidad ng code sa develop. Sa karaniwan, ang paghahanda ay tumatagal ng 2 hanggang 5 araw ng trabaho para sa isang katamtamang laki ng mobile application.
Sa release branch ay isinasagawa ang isang mahigpit na limitadong set ng mga gawain. Anumang paglihis mula sa listahang ito ay lumalabag sa modelo ng Git Flow at lumilikha ng mga panganib para sa katatagan ng release.
| Uri ng pagbabago | Pinapayagan | Halimbawa |
|---|---|---|
| Pag-version | Oo | Pag-update ng versionName sa build.gradle |
| Pag-aayos ng bug | Oo | Pag-aayos ng crash sa pagsisimula |
| Lokalisasyon | Oo | Pagdaragdag ng mga pagsasalin para sa mga bagong screen |
| Dokumentasyon | Oo | Pag-update ng CHANGELOG at README |
| Mga bagong feature | Hindi | Pagdaragdag ng bagong screen ng profile |
| Refactoring | Hindi | Pagsusulat muli ng network layer |
| Pag-update ng library | Maingat | Tanging mga patch na bersyon para sa pag-aayos ng bug |
Ang patakarang bawal ang mga bagong feature — ang pinakamahalaga sa release branch. Kung ang isang feature ay hindi umabot sa release, naghihintay ito sa susunod na cycle. Ang pagtatangkang itulak ang isang hindi tapos na feature sa release branch — ang pangunahing dahilan ng pagkaantala ng deadline at mga bug sa produksyon.
Sa release branch, ang numero ng bersyon ng application ay obligadong i-update. Para sa Android, ito ang mga field na versionCode at versionName sa build.gradle, para sa iOS — CFBundleShortVersionString sa Info.plist.
// build.gradle (app-level) — pag-update ng bersyon sa release branch
android {
defaultConfig {
versionCode 42
versionName "2.5.0"
}
}
// Para sa iOS — pag-update ng Info.plist
// CFBundleShortVersionString = 2.5.0
// CFBundleVersion = 42
Ang mga baguhang developer ay madalas napagkakamalan ang release at hotfix branch, kahit na ang kanilang layunin ay pangunahing naiiba. Ang pagkakamali sa pagpili ng uri ng branch ay maaaring humantong sa pagkaantala ng kritikal na pag-aayos o pagkagambala sa proseso ng release.
Kung ang isang bug ay natuklasan sa proseso ng paghahanda ng release (sa release branch) — ito ay isang ordinaryong pag-aayos ng bug. Kung ang isang bug ay natuklasan sa produksyon (sa main) — ito ay hotfix, at ito ay ginagawa mula sa main, kahit na ang release branch ay mayroon na.
Ang isang pamantayang pagpapangalan ng release branch ay nagpapasimple sa pag-navigate sa repository at nagpapahintulot sa mga CI/CD system na awtomatikong matukoy na ang branch ay kabilang sa proseso ng release.
release/2.5.0.release/merlin.release/2024-12-01.Ang format na release/X.Y.Z — ay mas gusto, dahil malinaw nitong iniuugnay ang branch sa numero ng bersyon na itatalaga sa release. Ito ay nagpapasimple sa paghahanap at awtomatikong pagproseso ng mga CI/CD script.
Pabalik na pagsasama (merge back) ng release branch sa develop — isa sa pinakamahalaga at madalas napapansing operasyon. Kung wala ito, lahat ng pag-aayos ng bug na ginawa sa release ay mananatili lamang sa bersyon ng release at hindi papasok sa susunod na release cycle.
Ang proseso ng pabalik na pagsasama ay isinasagawa pagkatapos na ang release branch ay naisama na sa main. Una, ang release ay isinasama sa develop, pagkatapos — tinatanggal. Tinitiyak nito na ang develop ay naglalaman ng lahat ng pag-aayos na ginawa sa proseso ng paghahanda ng release.
Pagkatapos ng pabalik na pagsasama, posible ang mga conflict — lalo na kung sa develop ay lumitaw na ang mga bagong feature branch na nagbago ng parehong mga file. Ang developer na responsable para sa release ay nireresolba ang mga conflict na ito at itinutulak ang develop sa server.
Ang ilang team ay gumagamit ng rebase sa halip na merge para sa pabalik na pagsasama, upang manatiling linear ang kasaysayan. Gayunpaman, ang merge ay mas ligtas para sa develop dahil hindi nito isinusulat muli ang kasaysayan ng commit na maaaring ginagamit na ng ibang developer.
Tingnan natin ang kumpletong siklo ng trabaho sa release branch: mula sa paggawa hanggang sa pagtanggal pagkatapos ng matagumpay na release ng mobile application na bersyon 2.5.0.
# 1. Paggawa ng release branch mula sa develop
git checkout develop
git pull origin develop
git checkout -b release/2.5.0
# 2. Pag-update ng bersyon at pag-aayos ng bug
git add build.gradle
git commit -m "Bump version to 2.5.0"
# 3. Pag-aayos ng mga bug (bugfixes lamang)
git add src/fix/
git commit -m "Fix crash on payment screen"
# 4. Pagpapadala ng release branch sa server
git push origin release/2.5.0
# 5. Pagsasama ng release sa main
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. Pabalik na pagsasama sa develop
git checkout develop
git merge --no-ff release/2.5.0
git push origin develop
# 7. Pagtanggal ng release branch
git branch -d release/2.5.0
git push origin --delete release/2.5.0
Ang mga utos 5 at 6 — dobleng pagsasama — ay kritikal. Una, natatanggap ng main ang release code at tag, pagkatapos ay nagsi-sync ang develop sa mga pag-aayos ng bug mula sa release. Kung ang hakbang 6 ay nilaktawan, ang mga pag-aayos mula sa release ay hindi papasok sa susunod na development cycle.
Para sa mga mobile project na may regular na release, ang proseso ng paggawa ng release branch at pag-update ng bersyon ay maaaring i-automate sa pamamagitan ng CI/CD scripts. Ang GitHub Actions ay nagpapahintulot na gumawa ng workflow na, sa pagpindot ng buton, ay gumagawa ng release branch na may awtomatikong pag-update ng bersyon.
Para sa mga mobile project na may regular na release, ang proseso ng paggawa ng release branch at pag-update ng bersyon ay maaaring i-automate sa pamamagitan ng CI/CD scripts. Ang GitHub Actions ay nagpapahintulot na gumawa ng workflow na, sa pagpindot ng buton, ay gumagawa ng release branch na may awtomatikong pag-update ng bersyon.
# GitHub Actions — automatisasyon ng paggawa ng release branch
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 }}
Mga Madalas Itanong
Isa lamang release branch sa isang pagkakataon, kung susundin mo ang Git Flow. Ang pagkakaroon ng dalawang aktibong release branch ay nangangahulugan na sinusubukan ng team na mag-release ng dalawang bersyon nang magkasabay — ito ay lumalabag sa prinsipyo ng sunod-sunod na release at lumilikha ng kalituhan sa mga bersyon.
Alisin ang mga commit ng hindi tapos na feature mula sa release branch sa pamamagitan ng git revert at ipagpaliban ang feature hanggang sa susunod na release. Huwag kailanman mag-release ng hindi tapos na functionality sa produksyon — ang technical debt at potensyal na bug ay hindi katumbas ng pagmamadali.
Para sa mga simpleng release na may isang pag-aayos, ang release branch ay maaaring laktawan at direktang pagsasama mula sa develop patungo sa main ang gawin. Gayunpaman, para sa mga karaniwang release, ang release branch ay sapilitan — itinatakda nito ang bersyon, ibinubukod ang paghahanda, at tinitiyak ang dobleng pagsasama ng mga pag-aayos ng bug.
Gumamit ng git revert sa main upang gumawa ng bagong commit na nagkakansela ng lahat ng pagbabago ng release. Pagkatapos ay tanggalin ang tag ng release gamit ang utos na git push origin --delete vX.Y.Z. Pagkatapos ayusin ang mga problema, gumawa ng bagong release branch na may mas mataas na numero ng patch.
Release candidate (RC) — ay isang build artifact na sumasailalim sa huling pagsubok. Release branch — ay ang Git branch kung saan ginawa ang release candidate. Ang isang release branch ay maaaring makabuo ng ilang RC builds (RC1, RC2, atbp.) habang inaayos ang mga bug.
Buod
release/X.Y.Z na may numero ng bersyon ayon sa SemVer.Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din