Skip to content

Conversation

annajowang
Copy link
Contributor

@annajowang annajowang commented Sep 26, 2025

Description

Process localBuild source deploys configs in firebase deploy for apphosting.

  • If localBuild is indicated in firebase.json, the deploy process will run a local apphosting build and upload the built app into a GCS bucket (instead of the entire source code).
  • Code to actually set localBuild in the user's firebase.json is not included here.

Scenarios Tested

firebase deploy --only apphosting
with apphosting { localBuild:true } in firebase.json.

The rollout is not expected to work on the backend yet, but a local build should be kicked off and the output should be successfully uploaded into buckets.

firebase deploy --only apphosting without localBuild continue to work.

annajowang and others added 30 commits September 16, 2025 16:58
…aces. (#9115)

* Add new zip deploy and local build fields to configs and Build interfaces.
- Improving instructions and return values in crashlytics tools
- Making interval handling more robust
- Adding return messages to avoid undefined tool responses
…ager to do more than check your login status (#9133)

* Tweak the connect prompt to look at gitignored files and to be less eager to do more than check your login status

* Loosen prescriptiveness, ease testing proactivity, come up with multiple root causes

* Respond to prompt review comments.
… in Firebase ToS (#9143)

* update_environment can be used to accept Gemini ToS

* changelog

* Update src/mcp/tools/core/update_environment.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* m

* m

* m

* m

* m

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Add a localbuild.ts to run apphosting local builds.
Add a subdirectory input to createArchive to allow for zipping just the subdirectory while still keeping its location relative to the rootDir
Sets the deploy context config for localBuild backends

In prepare, call the local build and set the build outputs in the config
In deploy, zip and upload the build directory
- Adds `/firebase:init` prompt with placeholder guidance.
- Resources are defined in `src/mcp/resources`.
- Prompts and other output can "link" to resources by saying to use the `read_resources` tool with a particular URI.
- Consolidates context into a single McpContext type.
- Some additional refactoring and cleanup.
* Update GEMINI_TOS_ERROR

* merge

* m
* Expose init prompt without mcpalpha experiment

* Remove import
* feat(mcp): Combine auth_get_user and auth_list_users tools

Combines the `auth_get_user` and `auth_list_users` MCP tools into a single `auth_get_users` tool.

This new tool has two optional arguments, `uids` and `emails`.
- When no arguments are provided, it behaves like `auth_list_users`.
- When either `emails` or `uids` is provided, it looks up users by the provided identifiers.

Removes unused variables and ensures that `passwordHash` and `salt` fields are consistently removed from all user objects returned by the tool.

* Formats

* Parallelize calls

* Small fixes

* npm format

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
Co-authored-by: Joe Hanley <[email protected]>
Co-authored-by: Alexander Nohe <[email protected]>
…9166)

* Deleted `src/mcp/tools/auth/disable_user.ts`, `src/mcp/tools/auth/disable_user.spec.ts`, `src/mcp/tools/auth/set_claims.ts`, and `src/mcp/tools/auth/set_claims.spec.ts`.

This indicates that my refactoring did not break any existing functionality.

I have created the new spec file at `src/mcp/tools/auth/update_user.spec.ts` with a basic test structure.

I have added a comprehensive suite of tests to `src/mcp/tools/auth/update_user.spec.ts` to cover all the functionality of the new tool.

* Cleaning up unit tests

* Fixing tests

* PR suggestions

* PR fixes

* Few changes

* Name update

* Name update

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
Co-authored-by: Joe Hanley <[email protected]>
Co-authored-by: Alexander Nohe <[email protected]>
* feat: support preview releases in publish script

The publish script has been updated to support a new 'preview' version.
When releasing a preview version, the following changes occur:

- A branch name must be provided, and the release will be built from that branch.
- The npm package is published with a '--tag=preview' flag.
- The following steps are skipped:
  - Pushing changes to the master branch.
  - Creating a GitHub release.
  - Generating firepit artifacts.
  - Generating a Docker image.

* feat: include branch name in preview release version and tag

Updates the preview release functionality to include the sanitized
branch name in the npm prerelease version string and the npm
distribution tag.

This allows for multiple preview versions from different branches to
coexist without conflicting.

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
This commit renames the `experimental:mcp` command to `mcp` and adds an alias for the old name to maintain backward compatibility. All references to the old command name in the codebase have been updated.

Additionally, the `isEnabled('mcp')` check has been removed, as the command is now stable.

A changelog entry has been added for this change.

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
Co-authored-by: Joe Hanley <[email protected]>
* Prevent the init prompt from building a mobile app backend

Co-authored-by: Konstantin Mandrika <[email protected]>

* Update src/mcp/prompts/core/init.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

---------

Co-authored-by: Konstantin Mandrika <[email protected]>
Co-authored-by: Joe Hanley <[email protected]>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* feat: Add GA4 tracking for Gemini CLI extension

This change adds a new parameter `gemini_cli_extension` to the MCP GA4 tracking when the `experimental:mcp` command is run. This parameter is set to "true" when the `IS_GEMINI_CLI_EXTENSION` environment variable is set, and "false" otherwise.

This will allow us to track the usage of the Gemini CLI extension.

* feat: Add GA4 tracking for Gemini CLI extension

This change adds a new parameter `gemini_cli_extension` to the MCP GA4 tracking when the `experimental:mcp` command is run. This parameter is set to "true" when the `IS_GEMINI_CLI_EXTENSION` environment variable is set, and "false" otherwise.

This will allow us to track the usage of the Gemini CLI extension.

(tests for private method removed per PR feedback)

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
Co-authored-by: Joe Hanley <[email protected]>
* BYO bucket for v2 functions uploads with runfunctions enabled

* update comments

* Reconcile FAH & CF3 upsert bucket. Fix Map usage in FAH

* PR feedback

* PR feedback

* PR feedback I failed to push earlier

* Fix problematic merge
@annajowang annajowang marked this pull request as ready for review September 26, 2025 13:34
@annajowang annajowang linked an issue Sep 26, 2025 that may be closed by this pull request
@annajowang
Copy link
Contributor Author

(All changes aside from some linting and tests have been code-reviewed in the jojwang-localbuild branch)

try {
const { outputFiles, annotations, buildConfig } = await localBuild(
options.projectRoot || "./",
"nextjs",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it noted anywhere to the user that only nextjs is supported? What happens if they try to deploy an Angular app

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, that's also why this feature is not exposed to the users anywhere yet. The original intention was to have this used exclusively by Studio first, so the nextjs hardcode is fine.

The underlaying local build CAN actually support angular, but the parsing of the build output to zip and upload to GCS needs tweaking to support angular.

We will also need the micro-discovery feature to tell the under-lying local build which adapter to run. This is very far from being done.

So the general steps of this work is:

  • get an MVP working that support nextjs for team testing
  • expand support beyond nextjs and MVP
  • document things when it's ready for users to use directly via the CLI

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add support for apphosting local builds in firebase deploy