Middle
Jak są używane zmienne wersji w procesie rozwoju? Jak są tworzone i skąd są pobierane?
sobes.tech AI
Odpowiedź od AI
Zmienne wersji są używane do identyfikacji konkretnego stanu lub wydania produktu programistycznego. Pomagają śledzić zmiany, zarządzać wydaniami i zapewniać powtarzalność kompilacji.
Główne sposoby użycia:
- Identyfikacja kompilacji: Każdej kompilacji przypisywany jest unikalny identyfikator, który może zawierać numer wersji, hash commita, znacznik czasu.
- Zarządzanie wydaniami: Zmienne wersji pozwalają wyraźnie rozróżniać stabilne wydania, wersje beta i kompilacje nocne.
- Przywracanie: W przypadku problemów można szybko powrócić do poprzedniej działającej wersji, używając jej identyfikatora.
- Logowanie i monitorowanie: W logach i metrykach wskazywana jest wersja aplikacji, co ułatwia diagnostykę.
Tworzenie i źródła:
- Systemy kontroli wersji (Git, SVN):
- Tag: Tworzone ręcznie lub automatycznie, aby oznaczyć ważne punkty (np. wydania).
- Hash commita: Unikalny identyfikator każdego commita.
- Systemy CI/CD (Jenkins, GitLab CI, GitHub Actions, CircleCI):
- Zmiennie predefiniowane: Systemy CI/CD dostarczają zmienne zawierające informacje o bieżącym uruchomieniu (numer kompilacji, gałąź, hash commita).
- Skrypty kompilacji: Zmienne wersji mogą być generowane przez skrypty podczas kompilacji na podstawie danych SCM i CI/CD.
- Automatyczne generatory wersji: Narzędzia analizujące historię commitów (np. na podstawie Conventional Commits) i automatycznie generujące numery wersji semantycznych (Major.Minor.Patch).
- Pliki konfiguracyjne: Wersja może być wpisana w plikach konfiguracyjnych projektu (np.
package.jsonw Node.js,pom.xmlw Maven).
Przykłady:
# Pobranie hash ostatniego commita w Git
git rev-parse HEAD
// Pipeline Jenkins - pobranie numeru kompilacji z wcześniej zdefiniowanej zmiennej
println "Numer kompilacji: ${env.BUILD_NUMBER}"
# GitLab CI - pobranie gałęzi i hash commita
# z wcześniej zdefiniowanych zmiennych
zmienne:
GIT_BRANCH: $CI_COMMIT_BRANCH
GIT_COMMIT: $CI_COMMIT_SHA
Zmienne wersji są integrowane z procesem budowania i wdrażania poprzez:
- Zmienne środowiskowe: Systemy CI/CD eksportują informacje jako zmienne środowiskowe.
- Argumenty wiersza poleceń: Przekazywane do skryptów budowania.
- Pliki konfiguracyjne: Odczytywane przez narzędzia budowania.
- Wtyczki i rozszerzenia: Narzędzia budowania i systemy CI/CD mają wtyczki do integracji z SCM i automatycznego pobierania informacji o wersji.