Sobes.tech
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.json w Node.js, pom.xml w 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.