Analiza szczegółowa

Mechanika wdrożenia

Jak naprawdę działa wdrożenie EVAN — zadania Gradle, łańcuch changelogów Liquibase, post-build i skrypty gałęzi.

Strona uzupełnia Wdrożenie o szczegóły mechaniki: zadania Gradle, ścieżki changelogów i skrypty pomocnicze.

Zadania Gradle

Zdefiniowane w build.gradle. Dwie grupy:

Wdrożenie (update)

  • dev, preprod, prod, apexprod — uruchamiają Liquibase z changelog/master.xml na danym środowisku.
  • installApexApps — import aplikacji APEX przez SQLcl, na bazie changelog/latest/6_applications.sql (skrypt _exec/lbupdate.sql), z weryfikacją braku błędów.

Podgląd / status (status read)

  • dev_conn, preprod_conn, prod_conn — używają changelog/master_preview_only.xml i zapisują wynik do preview_update_sql.sql (bez wdrażania).
  • read — wypisuje listę aplikacji APEX wraz ze statusem włączenia z 6_applications.sql.

Zmienne ścieżek w build.gradle:

changeLogFilePath         = ./changelog/master.xml                # wdrożenie
changeLogFilePath_status  = ./changelog/master_preview_only.xml   # podgląd
applicationsChangelogPath = ./changelog/latest/6_applications.sql # aplikacje APEX

Łańcuch changelogów Liquibase

changelog/master.xml dołącza po kolei:

  1. install/1_changelog_struct.xml — tabele i alter_object/ (m.in. tworzenie MV).
  2. install/2_changelog_constraints.xml — klucze obce, unikalność, check.
  3. install/3_changelog_objects.xml — indeksy, widoki, zadania harmonogramu.
  4. install/4_changelog_data.xml — dane słownikowe/konfiguracyjne (INSERT/UPDATE).
  5. latest/5_changelog_db.xml — najnowsze zmiany obiektów bazy.

Następnie skrypty post-build/ (jako runAlways):

  • get_git_history.sql — zapis historii Git do bazy (p_get_git_history); bywa wyłączony placeholderem.
  • replication_notifier.sql — wysyła e-mail o zmianach w strukturach replikowanych (changesety z kontekstem GOrepl z ostatnich ~10 min) przez APEX_MAIL.
  • compile_schema.sql — rekompilacja schematu VAN_DATA po zmianach; bywa zakomentowany.
master_preview_only.xml zawiera ten sam łańcuch install/* + 5_changelog_db.xml, ale bez instalacji aplikacji APEX i bez skryptów post-build/. Dlatego nadaje się do bezpiecznego podglądu (status).

Wybór aplikacji APEX

changelog/latest/6_applications.sql to plik-przełącznik. Każda aplikacja to linia @../../apex/f<ID>/install.sql:

-- @../../apex/f1/install.sql      -- WYŁĄCZONA (komentarz SQL, SQLcl pomija)
@../../apex/f11700/install.sql     -- WŁĄCZONA (zostanie zainstalowana)

installApexApps wykonuje tylko linie odkomentowane. Zwykle większość aplikacji jest wyłączona, a włączone są tylko te objęte bieżącym wdrożeniem.

Środowiska

ŚrodowiskoHost / Port / SerwisHasło
dev192.168.0.53:6021 / pdb_dev.podlasiezmienna $VDATAPW
preprod192.168.0.53:6021 / pdb_preprod.podlasiezmienna $VDATAPWPPR
prod192.168.0.52:5021 / pdb_prod.podlasiezmienna $VDATAPWPR
apexprod192.168.0.52:5021 / pdb_apex.podlasiewpisane w skrypcie

Użytkownik bazy: VAN_DATA.

Hasła do dev/preprod/prod pochodzą ze zmiennych środowiskowych, ale zadanie apexprod oraz liquibase.properties zawierają hasło wpisane na stałe, a w build.gradle w komentarzach bywają klucze licencyjne. To sekrety do wycofania do sejfu — zob. Uwagi i ryzyka. Powiadomienie replication_notifier.sql zawiera też zaszytą listę adresów e-mail.

Skrypty gałęzi (_exec/)

Archiwizacja gałęzi do tagu i jej usunięcie:

# arch_branch.sh <branch>
git tag archive/$1 $1     # tag-backup
git push --tags
git branch -d $1          # usunięcie lokalnie
git branch -d -r origin/$1
git push origin :$1       # usunięcie na zdalnym

Przywrócenie zarchiwizowanej gałęzi:

# restore_branch.sh <branch>
git checkout -b $1 archive/$1
Copyright © 2026