Proces kompilacji w usłudze App Hosting

Firebase App Hosting korzysta z Cloud Build, aby przekształcić kod źródłowy aplikacji w format kontenerowy odpowiedni do wdrożenia w Cloud Run.

Proces kompilacji przebiega w tych kluczowych etapach:

  1. ubuntu: inicjowanie obszaru roboczego.

  2. preparer: zbieranie kodu źródłowego i konfiguracji aplikacji.

  3. pre-buildpack: przygotowywanie środowiska pakietu kompilacji.

  4. build: instalowanie zależności i kompilowanie aplikacji.

  5. publisher: finalizowanie kontenera produkcyjnego Cloud Run.

Te 5 kroków odpowiada bezpośrednio krokom kompilacji wyświetlanym w Cloud Build w konsoli Google Cloud:

Zrzut ekranu z konsoli Google Cloud przedstawiający kroki Cloud Build

Inicjowanie obszaru roboczego

Ten etap odpowiada krokowi kompilacji ubuntu. Inicjuje on obszar roboczy kompilacji, zapewniając prawidłowe ustawienie uprawnień do plików w katalogach używanych przez kolejne kroki kompilacji.

Preparer

Ten etap odpowiada za obsługę logiki przed kompilacją. Odczytuje, oczyszcza i zapisuje zmienne środowiskowe zdefiniowane przez użytkownika. Usuwa też odwołania do wszystkich obiektów tajnych określonych w pliku apphosting.yaml i przypina je.

Pre-buildpack

Ten krok przygotowuje środowisko do cyklu życia pakietów kompilacji Cloud Native. Obejmuje to uruchomienie shim, który tłumaczy konfiguracje i zmienne środowiskowe przygotowane w poprzednim etapie na format oczekiwany przez narzędzia CNB.

Kompilacja

Jest to główna część procesu kompilacji, która odpowiada za wygenerowanie obrazu kontenera do uruchomienia i pliku bundle.yaml określającego konfigurację kompilacji. Do wydajnego pakowania aplikacji używa pakietów kompilacji Cloud Native i binarnego narzędzia do tworzenia cyklu życia za pomocą aplikacji. Więcej informacji o pliku bundle.yaml znajdziesz w GitHub.

Pakiety kompilacji odpowiadają za przekształcanie kodu źródłowego aplikacji w obrazy kontenerów gotowe do wykorzystania w środowisku produkcyjnym. Firebase App Hosting łączy kilka pakietów kompilacji, aby zakończyć proces kompilacji:

  1. Runtime Buildpack: zapewnia, że wszystkie niezbędne komponenty do uruchomienia podstawowej aplikacji Node.js są uwzględnione, a zależności są zainstalowane.
  2. Monorepo Buildpack: konfiguruje kolejne pakiety kompilacji do obsługi różnych scenariuszy monorepo.
  3. Framework Buildpack: instaluje odpowiedni adapter platformy (np. Angular lub Next.js) i przygotowuje kolejne pakiety kompilacji.

    Adaptery platformy odpowiadają za uruchamianie polecenia kompilacji produkcyjnej i mapowanie wszystkich odpowiednich wartości konfiguracji specyficznych dla platformy na standardowy format czytelny dla App Hosting.

  4. Package Manager Buildpack: wykonuje instalację zależności i kompiluje aplikację za pomocą npm, yarn lub pnpm.

  5. Output Bundle Buildpack: definiuje polecenie uruchamiania i przygotowuje pakiet wyjściowy do wykonania.

Wydawca

Ten ostatni etap pakuje wszystkie informacje wyodrębnione z kodu źródłowego aplikacji oraz obraz kontenera kompilacji i wysyła je do App Hosting backendu. Backend App Hosting używa tych informacji do skonfigurowania Cloud Run z odpowiednimi ustawieniami.

Zasady czyszczenia kompilacji

Firebase App Hosting stosuje automatyczne zasady przechowywania i czyszczenia kompilacji. Zgodnie z tymi zasadami, App Hosting przechowuje udane kompilacje i powiązane z nimi Cloud Run wersje z ostatnich 14 dni. Dodatkowo, aby zapewnić, że zawsze będziesz mieć kompilację, do której możesz wrócić, App Hosting przechowuje 5 najnowszych udanych kompilacji i wdrożeń niezależnie od ich wieku.

App Hosting nigdy nie usunie ani nie usunie kompilacji, która jest obecnie w aktywnym podziale ruchu lub jest powiązana z wdrożeniem w toku.

Gdy starsze kompilacje przekroczą te limity przechowywania, ich stan wewnętrzny zostanie zaktualizowany do EXPIRED. Nie możesz natychmiastowo przywrócić kompilacji EXPIRED, a opcja przywrócenia tych kompilacji zostanie usunięta z Firebase konsoli. Zamiast tego musisz utworzyć nową kompilację kierowaną na to samo źródło (zatwierdzenie git, kontener w Artifact Registry lub zasobnik Google Cloud Storage) i ją wdrożyć.

Jednym ze sposobów na oszczędzanie zasobów kompilacji jest kontrolowanie częstotliwości wyzwalania automatycznych wdrożeń. Zobacz Zarządzanie automatycznymi wdrożeniami.

Więcej informacji

Cały proces kompilacji App Hosting jest open source.