Entender a hospedagem de apps e como ela funciona

O App Hosting processa uma série complexa de tarefas em segundo plano para simplificar a implantação do app. Esta página descreve as principais partes desse fluxo de tarefas, fornecendo informações sobre os pontos em que você pode querer personalizar o fluxo de acordo com as necessidades do app.

Suporte do framework

O App Hosting oferece suporte de criação e implantação sem necessidade de configuração para apps da Web desenvolvidos nestas estruturas:

  • Next.js 13 ou mais recente
  • Angular 17.2 ou mais recente

O App Hosting identifica o framework que você está usando inspecionando o arquivo package-lock.json ou outro arquivo de bloqueio no repositório. Se você tentar implantar um app Node.js sem um arquivo de bloqueio, o App Hosting não criará e executará o app. É possível criar package-lock.json executando npm install no diretório raiz.

Os adaptadores de framework do App Hosting têm dois papéis principais:

  1. Eles analisam seu código-fonte e todos os arquivos de configuração específicos do framework (como next.config.js) para entender o comportamento configurado do app.
  2. Elas executam o comando de build do app para gerar recursos estáticos e criar uma versão otimizada para produção.

Os adaptadores de framework criam seu app Node.js com npm run build, funcionando melhor com os scripts de build padrão de cada framework: next build para Next.js e ng build para Angular. O App Hosting tentará criar builds com comandos de build personalizados, mas não é possível garantir o sucesso.

Como funciona a integração de repositórios do App Hosting

A conexão importante entre o repositório do GitHub e o back-end do App Hosting é gerenciada pelo Developer Connect, a plataforma de conectividade do Google Cloud para ferramentas externas de DevOps. Durante a criação de um back-end do App Hosting, o fluxo de trabalho da interface do Developer Connect orienta você na instalação do app GitHub do Firebase. As principais etapas desse processo são:

  1. Você concede ao Developer Connect o papel Administrador do Secret Manager. Isso permite que o sistema armazene credenciais com segurança como "secrets" no Cloud Secret Manager.
  2. Você autoriza o app GitHub do Firebase a acessar seu repositório do GitHub.
  3. O Developer Connect armazena um token de autorização dedicado do GitHub no repositório do Secret Manager do projeto. Não modifique nem exclua esse token.

Além disso, o App Hosting se integra à API de verificações do GitHub para oferecer uma verificação de lançamentos. Essa verificação permite visualizar o status do lançamento no GitHub e depurar o processo de implantação em caso de erros.

Integração com o Firebase e outros serviços do Google

O App Hosting configura os ambientes de criação e ambiente de execução para inicializar o SDK Admin do Firebase com o Google Application Default Credentials. Dessa forma, seu back-end poderá se comunicar com outros produtos do Firebase durante a criação e a implantação.

A conta de serviço de back-end do App Hosting

Durante a criação e no ambiente de execução, o back-end do App Hosting é autenticado com outros serviços do Google usando uma conta de serviço. Uma conta de serviço padrão para essas finalidades é criada na primeira vez que você ativa o App Hosting em um projeto do Firebase:

firebase-app-hosting-compute@PROJECT ID.iam.gserviceaccount.com

Essa conta de serviço se aplica a todos os back-ends por padrão e tem um conjunto mínimo de permissões para que você crie, execute e monitore seu app. Ela também tem permissão para autenticar o SDK Admin com o Application Default Credentials para executar operações como carregamento de dados do Cloud Firestore. Consulte Papéis do Firebase App Hosting.

Caso seu app precise interagir com outros serviços do Google no tempo de build ou em um back-end em execução, personalize a conta de serviço padrão adicionando papéis. Por exemplo, se o app exigir permissões para a Vertex AI, talvez seja necessário adicionar roles/aiplatform.user ou algum papel relacionado.

Principais termos e definições

  • Back-end: a coleção de recursos gerenciados que o App Hosting cria para criar e executar seu app da Web.
  • Lançamento: uma versão específica do seu app ativo, vinculada a uma confirmação do git.
  • Ramificação ativa: a ramificação do repositório do GitHub que é implantada no URL ativo. Muitas vezes, é a ramificação em que as ramificações de recursos ou de desenvolvimento são mescladas.

Limitações e problemas conhecidos

A visualização do App Hosting tem algumas limitações conhecidas:

  • A otimização de imagens ainda não está disponível.
  • Em alguns casos, um back-end de hospedagem de apps pode retornar mensagens Intermittent connection error no URL do app. Uma correção estará disponível em uma versão posterior.
  • Os cabeçalhos do cache são modificados para limitar os caches de CDN a 60 segundos. No futuro, quando a hospedagem de apps puder limpar rapidamente o cache na implantação, esse limite será suspenso.
  • Os arquivos estáticos sem cache são disponibilizados fora do Cloud Run. Em uma versão posterior, eles serão armazenados e disponibilizados pela origem do App Hosting para melhorar o desempenho.
  • Subdomínios com caracteres curinga como domínios personalizados estarão disponíveis em uma versão posterior.
  • Talvez as SKUs do App Hosting não sejam exibidas na página de uso do back-end no Console do Firebase. Eles estarão disponíveis em uma próxima versão.
  • O Console do Firebase pode mostrar intermitentemente um erro "O build não foi encontrado e é inválido" na criação do back-end.
  • Projetos com arquivos package.json aninhados não são compatíveis no momento, independentemente de root\_directory estar configurado com o Console do Firebase ou com a CLI. Uma correção será disponibilizada em uma versão posterior.
  • Atualmente, todos os back-ends no mesmo projeto compartilham uma organização/conta do GitHub. Eles podem ser conectados a diferentes repositórios nessa organização/conta. Para criar back-ends conectados a diferentes contas do GitHub, coloque-os em projetos separados.
  • No momento, só há suporte para a região us-central1.