Aktualizácie
Sprievodca bezpečnou aktualizáciou GitPulse na novú verziu.
Stratégia vydávania verzií
Calendar Versioning
| Text Only |
|---|
| YYYY.M.D[.postN]
| | |
| | +- Voliteľný same-day follow-up
| +------- Mesiac releasu
+------------- Rok releasu
|
| Verzia | Príklad | Vyžaduje |
| Dátumový release | Aktuálny dátum -> neskorší dátum releasu | Reštart kontajnerov; možné migrácie |
| Same-day follow-up | 2026.5.17.post2 -> 2026.5.17.post3 | Reštart kontajnerov |
| Breaking release | Ľubovoľná verzia | Explicitné release notes a operátorská akcia |
Aktuálny baseline
GitPulse aktuálne beží na 2026.5.17.post3; CalVer baseline začína z 2026.5.15.
- Repozitár začal ako full-codebase initial commit, nie ako tagovaný
0.1.0 release. - Pred zápisom tohto baseline audit našiel 1875 commitov, 47 Alembic migračných súborov a žiadne predchádzajúce release tagy.
- Počty commitov a migrácií sú prevádzkový kontext, nie stabilné verejné komponenty verzie. Aktuálne releasy preto používajú Calendar Versioning (
YYYY.M.D). - Same-day follow-up releasy používajú
.postN; breaking changes musia byť jasne popísané v release notes a rollout docs.
Pred aktualizáciou
1. Kontrola release notes
| Bash |
|---|
| # Pozrieť release notes
open https://git.kpi.fei.tuke.sk/kpi-zp/2027/dp.mykyta.olym/workspace/workspace/-/releases
|
2. Záloha databázy
| Bash |
|---|
| # Vytvorenie zálohy pred aktualizáciou
./scripts/backup.sh
# Overenie zálohy
ls -la backups/
|
3. Kontrola dostupného miesta
| Bash |
|---|
| # Disk space
df -h
# Docker images
docker system df
|
4. Plánovanie maintenance window
gantt
title Aktualizačný plán
dateFormat HH:mm
axisFormat %H:%M
section Príprava
Záloha DB :prep1, 08:00, 15m
Notifikácia users :prep2, after prep1, 15m
section Aktualizácia
Pull nových images :update1, 08:30, 10m
Stop services :update2, after update1, 5m
Migrácia DB :update3, after update2, 10m
Start services :update4, after update3, 5m
section Overenie
Health checks :verify1, 09:00, 10m
Smoke testy :verify2, after verify1, 10m
Proces aktualizácie
Štandardná aktualizácia (Patch/Minor)
| Bash |
|---|
| # 1. Prepnúť na správnu verziu
cd /home/gitpulse/gitpulse
git fetch --tags
git checkout v1.1.0
# 2. Pull nových Docker images
docker compose pull
# 3. Zastaviť služby gracefully
docker compose stop api worker
# 4. Spustiť migrácie (ak treba)
docker compose run --rm api alembic upgrade head
# 5. Spustiť nové verzie
docker compose up -d
# 6. Overenie
docker compose ps
curl https://gitpulse.kpi.fei.tuke.sk/health
|
Zero-downtime aktualizácia
Pre produkciu s požiadavkou na dostupnosť:
| Bash |
|---|
| # 1. Pull nových images
docker compose pull
# 2. Scale up nové inštancie
docker compose up -d --scale api=2 --no-recreate
# 3. Počkať na health check nových inštancií
sleep 30
# 4. Rolling restart
docker compose up -d --force-recreate
# 5. Overiť
curl https://gitpulse.kpi.fei.tuke.sk/health
|
Major version upgrade
Major verzie môžu obsahovať breaking changes:
| Bash |
|---|
| # 1. Prečítať migration guide
cat docs/UPGRADING.md
# 2. Záloha všetkého
./scripts/backup.sh --full
# 3. Maintenance mode
docker compose exec api \
python -c "from app.config import settings; settings.MAINTENANCE_MODE = True"
# 4. Stop všetkých služieb
docker compose down
# 5. Aktualizácia kódu
git fetch --tags
git checkout v2.0.0
# 6. Aktualizácia konfigurácie (ak treba)
# Pozrieť .env.example pre nové premenné
diff .env .env.example
# 7. Build/pull nových images
docker compose pull
# 8. Migrácie
docker compose run --rm api alembic upgrade head
# 9. Spustenie
docker compose up -d
# 10. Disable maintenance mode
docker compose exec api \
python -c "from app.config import settings; settings.MAINTENANCE_MODE = False"
|
Rollback
Rýchly rollback
| Bash |
|---|
| # Ak niečo zlyhalo, rollback na predchádzajúcu verziu
# 1. Stop problematickej verzie
docker compose down
# 2. Checkout predchádzajúcej verzie
git checkout v1.0.5
# 3. Obnova databázy (ak boli migrácie)
./scripts/restore.sh backups/backup_20241115_080000.sql
# 4. Spustenie
docker compose up -d
|
Databázový rollback
| Bash |
|---|
| # Ak migrácia spôsobila problémy
docker compose exec api \
alembic downgrade -1
# Alebo na konkrétnu revíziu
docker compose exec api \
alembic downgrade 010_ci_failure_generator
|
Automatizácia
GitLab CI deployment
| YAML |
|---|
| # .gitlab-ci.yml
deploy:production:
stage: deploy
environment:
name: production
url: https://gitpulse.kpi.fei.tuke.sk
only:
- tags
when: manual
script:
- ssh gitpulse@server "cd gitpulse && git pull && docker compose pull && docker compose up -d"
|
Ansible playbook
| YAML |
|---|
| # deploy.yml
---
- hosts: production
become: yes
become_user: gitpulse
vars:
app_dir: /home/gitpulse/gitpulse
version: "{{ lookup('env', 'VERSION') | default('latest') }}"
tasks:
- name: Pull latest code
git:
repo: https://git.kpi.fei.tuke.sk/kpi-zp/2027/dp.mykyta.olym/workspace/workspace.git
dest: "{{ app_dir }}"
version: "{{ version }}"
- name: Pull Docker images
community.docker.docker_compose:
project_src: "{{ app_dir }}"
files:
- docker-compose.yml
pull: yes
state: present
- name: Run migrations
community.docker.docker_container_exec:
container: gitpulse-api-1
command: alembic upgrade head
- name: Restart services
community.docker.docker_compose:
project_src: "{{ app_dir }}"
files:
- docker-compose.yml
restarted: yes
|
Checklist
Pred aktualizáciou
Počas aktualizácie
Po aktualizácii
Troubleshooting
Migrácia zlyhala
| Bash |
|---|
| # Pozrieť error
docker compose logs api | grep -i error
# Manuálne spustiť migráciu pre debug
docker compose exec api alembic upgrade head --sql
# Rollback ak treba
docker compose exec api alembic downgrade -1
|
Kontajner nenaštartuje
| Bash |
|---|
| # Kontrola logov
docker compose logs api
# Kontrola konfigurácie
docker compose config
# Spustiť interaktívne pre debug
docker compose run --rm api /bin/bash
|
Health check zlyháva
| Bash |
|---|
| # Manuálny health check
curl -v http://localhost:8000/health
# Kontrola databázového pripojenia
docker compose exec api \
python -c "from app.db.session import engine; print(engine.url)"
|
Ďalšie čítanie