Zazwyczaj zalecamy korzystanie z automatycznego wdrażania lub wdrażania wywoływanego ręcznie w konsoli Firebase. Możesz jednak potrzebować bardziej dostosowanego procesu wdrażania. App Hosting ma wiele opcji wdrożenia niestandardowego.
Wdrażanie z kodu źródłowego za pomocą interfejsu wiersza poleceń Firebase
Interfejs wiersza poleceń Firebase umożliwia przesyłanie kodu źródłowego i konfiguracji aplikacji bezpośrednio z komputera lokalnego do Firebase. Jest to wygodne, jeśli masz inne wdrożenia Firebase (np. reguły zabezpieczeń lub funkcje) i chcesz wdrożyć aplikację internetową oraz usługi backendu za pomocą jednego polecenia CLI.
Podczas wdrażania App Hosting przesyła kod źródłowy do zasobnika Google Cloud Storage, uruchamia polecenie kompilacji platformy w Cloud Build i wdraża końcowe artefakty w Cloud Run i Cloud CDN. App Hosting korzysta z tego samego procesu kompilacji w przypadku wdrożeń z lokalnego źródła co w przypadku wdrożeń z GitHuba. Jeśli w projekcie masz plik .gitignore, pliki i foldery, które zawiera, są wykluczane z wdrożenia.
Aby wdrożyć aplikację ze źródła lokalnego:
- Uruchom polecenie firebase init apphostingw katalogu projektu lokalnego.
- W wyświetlonym oknie wybierz Użyj istniejącego projektu, a potem wybierz wybrany projekt Firebase.
- Wybierz nowy lub istniejący backend, na którym chcesz wdrożyć aplikację. Ten krok konfiguruje wdrożenia App Hosting w lokalnym katalogu i wyświetla prośbę o podanie informacji, których App Hosting potrzebuje do pomyślnego wdrożenia aplikacji: - Identyfikator backendu, na którym ma zostać wdrożona aplikacja.
- Region, w którym ma zostać wdrożony backend (jeśli tworzysz nowy backend).
- Ścieżka do katalogu głównego kodu aplikacji
 - App Hosting zapisuje Twoje preferencje wdrażania w pliku - firebase.json(tworząc go w lokalnym projekcie, jeśli nie istnieje). Po pomyślnym zakończeniu inicjowania możesz uruchomić polecenie- firebase deploy, aby wdrożyć kod źródłowy w App Hosting.
Jeśli masz wdrożenia lokalnego źródła danych skonfigurowane dla wielu backendów (co oznacza, że w backendId jest wiele wpisów firebase.json), firebase deploy zostanie wdrożony w każdym z tych backendów. Aby wdrożyć aplikację na konkretnym backendzie, użyj
firebase deploy --only apphosting:backendId
Przykładowy plik firebase.json
{
  "apphosting": [
    {
      "backendId": "my-backend",
      // rootDir specifies the directory containing the app to deploy, but the entire
      // parent directory of firebase.json will be zipped and uploaded to ensure that
      // dependencies outside of the app directory will be available at build time.
      "rootDir": "./my-app",
      "ignore": [
        "node_modules",
        ".git",
        "firebase-debug.log",
        "firebase-debug.*.log",
        "functions",
      ],
    },
  ]
}
Wdróż z użyciem Terraform
Jeśli potrzebujesz większej kontroli nad procesem kompilacji i wdrożonym środowiskiem, możesz wdrożyć aplikację za pomocą Terraform. Terraform umożliwia definiowanie zasobów App Hosting i zarządzanie nimi za pomocą deklaratywnych plików konfiguracji. Zapewnia też możliwość wdrażania własnego wstępnie skompilowanego obrazu kontenera bezpośrednio w App Hosting zamiast polegać na App Hosting w zakresie kompilowania z kodu źródłowego.
Jeśli dopiero zaczynasz korzystać z Terraform, przeczytaj artykuł Pierwsze kroki z Terraform i Firebase. Jeśli znasz już Terraform, możesz zacząć od przykładowych plików konfiguracji i innych App Hostingzasobów.
Wdrażanie za pomocą Firebase Studio
Gdy utworzysz aplikację internetową za pomocą agenta do prototypowania aplikacji w Firebase Studio, możesz ją opublikować lub wdrożyć w Firebase App Hosting bezpośrednio z Firebase Studio. Zobacz Publikowanie aplikacji za pomocą hostingu aplikacji.
Konfigurowanie połączenia z GitHub na potrzeby CI/CD
W każdej chwili możesz połączyć repozytorium GitHub na karcie Wdrożenie w ustawieniach backendu w konsoli Firebase. Umożliwia to wdrożenie prototypu aplikacji ze środowiska lokalnego, takiego jak Firebase Studio lub inne IDE, a następnie przejście na automatyczną ścieżkę CI/CD, gdy wszystko będzie gotowe.