-
Notifications
You must be signed in to change notification settings - Fork 0
Upravljanje skupnega razvoja
Spremljanje programske kode s pomočjo orodja GitHub
Mentor: Marko Bizjak
Skupina: Anastasija Temova, David Boshevski, Damjan Milenković
Za spremljanje in verzioniranje programske kode študentskega projekta smo uporabili spletno orodje GitHub, ki temelji na sistemu za verzioniranje Git. GitHub omogoča centralizirano hranjenje kode, sledenje spremembam, sodelovanje med člani ekipe ter integracijo z orodji za vodenje projekta.
Vsak član mikroskupine je najprej opravil registracijo uporabniškega računa na spletni strani https://github.com. Po uspešni registraciji je vodja mikroskupine ustvaril nov repozitorij za hranjenje programske kode študentskega projekta, kot je prikazano na Sliki 1.

Repozitorij je bil sprva ustvarjen kot zaseben (private), kar pomeni, da je bil dostopen le povabljenim članom. To je med razvojem zagotavljalo varnost kode in nadzor nad dostopom do repozitorija.
Po uspešnem kreiranju repozitorija je vodja mikroskupine v nastavitve repozitorija (Settings → Collaborators) dodal vse člane mikroskupine z ustreznimi pravicami, kot je prikazano na Sliki 2:
- Anastasija Temova — Write (pravice za pisanje in potrditev kode)
- David Boshevski — Write (pravice za pisanje in potrditev kode)
- Damjan Milenković — Write (pravice za pisanje in potrditev kode)
- Marko Bizjak (mentor) — Read (pregled kode in vodenje poteka vaje)

V repozitoriju sledimo principu Gitflow, ki je uveljavljena metoda za upravljanje z vejami v sistemu Git. Gitflow predpisuje jasno strukturo vej, ki ločuje razvojno delo od stabilne produkcijske kode in olajša vzporeden razvoj več funkcionalnosti hkrati.
%%{init: {'theme':'base','gitGraph': {'mainBranchName': 'main','showCommitLabel': false}, 'themeVariables': {'git0':'#0b3d91','git1':'#1565c0','git2':'#1976d2','git3':'#2196f3','git4':'#42a5f5','git5':'#64b5f6','git6':'#90caf9','git7':'#0d47a1','gitBranchLabel0':'#ffffff','gitBranchLabel1':'#ffffff','gitBranchLabel2':'#ffffff','gitBranchLabel3':'#ffffff','gitBranchLabel4':'#000000','gitBranchLabel5':'#000000','gitBranchLabel6':'#000000','gitBranchLabel7':'#ffffff','tagLabelColor':'#ffffff','tagLabelBackground':'#0b3d91'}}}%%
gitGraph
commit id: "init"
branch develop
checkout develop
commit id: "setup"
branch feature/stm32_communications
checkout feature/stm32_communications
commit
commit
checkout develop
merge feature/stm32_communications
branch feature/user-interface
checkout feature/user-interface
commit
commit
checkout develop
merge feature/user-interface
branch feature/recommendation-system
checkout feature/recommendation-system
commit
checkout develop
merge feature/recommendation-system
branch feature/growth-model
checkout feature/growth-model
commit
checkout develop
merge feature/growth-model
branch feature/detection
checkout feature/detection
commit
commit
checkout develop
merge feature/detection
branch dockerization
checkout dockerization
commit
checkout develop
merge dockerization
branch feature/CI-CD
checkout feature/CI-CD
commit
checkout develop
merge feature/CI-CD
checkout main
merge develop tag: "v1.0"
V skladu s principom Gitflow vzdržujemo naslednje veje:
| Veja | Ime veje | Namen |
|---|---|---|
| Glavna (produkcijska) veja | main |
Vsebuje stabilno, produkcijsko kodo. Na to vejo se izvaja združevanje samo iz veje develop po uspešnem testiranju. Vlogo produkcijske veje prevzema main; ob stabilni različici se na njej ustvari oznaka (tag). |
| Razvojna veja | develop |
Aktivna razvojna veja, kamor se združujejo zaključene funkcionalnosti (feature veje). Osnova za vse razvojne aktivnosti. |
| Veje za funkcionalnosti | feature/ime-funkcionalnosti |
Ločena veja za razvoj vsake posamezne funkcionalnosti. Po zaključku se združi nazaj v vejo develop. |
Trenutne veje v repozitoriju:
-
main— glavna stabilna (produkcijska) veja -
develop— aktivna razvojna veja -
feature/growth-color-model— razvoj modela za napoved rasti in barve -
feature/recommending-system— razvoj priporočilnega sistema -
feature/stm32_communications— razvoj komunikacije s senzorji STM32 -
feature/user-interface— razvoj grafičnega vmesnika -
feature/CI-CD— vzpostavitev sprotne integracije
Potek dela v okviru metodologije Gitflow poteka na naslednji način:
1. Ustvaritev nove feature veje iz veje develop:
git checkout develop
git pull origin develop
git checkout -b feature/ime-funkcionalnosti2. Redno ustvarjanje potrditev med razvojem:
git add .
git commit -m "DEV-12 Dodaj branje intenzitete svetlobe"
git push origin feature/ime-funkcionalnosti3. Po zaključku razvoja član ustvari zahtevo za združitev (Pull Request) v vejo develop. Ostali člani pregledajo kodo, podajo komentarje in po odobritvi se feature veja združi v develop, kot je prikazano na Sliki 4.
4. Po uspešnem testiranju se veja develop združi v vejo main, kjer se za stabilno različico ustvari oznaka:
git checkout main
git merge develop
git tag -a v1.0 -m "Različica 1.0"

Za povezavo med repozitorijem GitHub in sistemom za vodenje projekta Jira smo uporabili integracijo GitHub for Jira. Povezava omogoča, da se potrditve (commits) in feature veje samodejno prikažejo pri ustreznem opravilu v Jiri, in sicer na podlagi navedbe ključa opravila v sporočilu potrditve.
Pri vsakem commitu na začetku sporočila navedemo ključ opravila iz Jire (DEV-<številka>), ki mu sledi kratek opis spremembe:
DEV-<številka> kratek opis spremembe
Primeri dejansko uporabljenih commit sporočil:
DEV-58 Code structure cleanup: split pages, add models and database
DEV-59 BugFix - TclError "bad screen distance" when opening Dashboard
DEV-60 Implement dark/light theme toggle
DEV-63 Detection model untrained — replace with trained EfficientNetB0 CNN
Opomba: Ključ opravila (npr.
DEV-58) na začetku sporočila omogoča, da integracija GitHub for Jira commit samodejno poveže z ustreznim opravilom v Jiri. Povezane potrditve so vidne v razdelku Development posameznega opravila.

Poleg opravil v Jiri smo za sprotno beleženje napak, znanih omejitev in predlogov izboljšav uporabljali tudi GitHub Issues. Issues omogočajo, da so težave in nadaljnje naloge dokumentirane neposredno ob kodi, dodeljene posameznim članom ter po potrebi povezane s spremembami (commiti in Pull Requesti).
Vsako issue vsebuje naslov, opis težave oziroma predloga, dodeljeno osebo (Assignee) in stanje (odprto / zaprto). Med razvojem smo zabeležili med drugim naslednje issue-je:
- Dockerization works only on Ubuntu/Linux — kontejnerizacija je trenutno podprta le na okolju Ubuntu/Linux.
- Plant-height models are not calibrated against ground truth — modeli za oceno višine niso umerjeni glede na referenčne meritve.
- Detection model is untrained — predictions not reliable — model za zaznavanje zdravja je bilo treba dodatno naučiti (kasneje rešeno z učenjem modela EfficientNetB0 na slikah celotnih rastlin).
- Add unit tests and verify CI workflow runs — dodajanje testov enot in preverjanje delovanja CI.
- Do not version-control runtime data (ui/plants_data.json) — izvajalni (runtime) podatki naj ne bodo pod verzioniranjem.
Z beleženjem issue-jev zagotavljamo preglednost znanih omejitev in nadaljnjih korakov razvoja.

V repozitoriju smo vzpostavili sprotno integracijo (Continuous Integration / Continuous Deployment — CI/CD) s pomočjo orodja GitHub Actions. Sprotna integracija zagotavlja samodejno testiranje in preverjanje kakovosti kode ob vsaki novi potrditvi (commit), kar zmanjšuje tveganje za napake in zagotavlja stabilnost kode.
Konfiguracija se nahaja v datotekah v mapi .github/workflows/ v korenu repozitorija. Vzpostavili smo dva ločena poteka (workflow):
-
CI — razvojna veja — samodejno testiranje enot ob vsakem commitu na vejo
developin pri Pull Requestih, -
CD — produkcija — samodejno prevajanje in objava ob vsakem commitu na vejo
main.
# CI - razvojna veja
name: CI - Development branch
on:
push:
branches: [ develop ]
pull_request:
branches: [ develop ]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install dependencies
run: pip install -r requirements.txt
- name: Run tests
run: pytest tests/ -vNa razvojni veji (develop) se ob vsakem commitu samodejno izvedejo testi enot. Na glavni veji (main) pa se koda samodejno prevede in objavi. Člani skupine prejmejo e-poštno obvestilo o uspehu ali napaki posameznega koraka.


Z vzpostavitvijo repozitorija na platformi GitHub in uvedbo metodologije Gitflow smo zagotovili strukturirano upravljanje s programsko kodo študentskega projekta. Jasna delitev na veje main, develop in feature/* omogoča vzporeden razvoj funkcionalnosti brez tveganja za nestabilnost produkcijske kode.
Navedba ključev opravil iz Jire v commit sporočilih zagotavlja sledljivost med opravili v sistemu za vodenje projekta in posameznimi potrditvami kode. Beleženje znanih omejitev prek GitHub Issues ohranja preglednost nad nadaljnjimi koraki, vzpostavljena sprotna integracija (CI/CD) z GitHub Actions pa zagotavlja samodejno testiranje in objavo kode, kar zmanjšuje možnost vnosa napak in pospešuje postopek objave novih različic aplikacije.
Zadnja posodobitev: junij 2026