git clone https://github.com/firebase/firebase-tools
T=$(mktemp -d) && git clone --depth=1 https://github.com/firebase/firebase-tools "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.agent/skills/update-pubsub-emulator" ~/.claude/skills/firebase-firebase-tools-update-pub-sub-emulator && rm -rf "$T"
.agent/skills/update-pubsub-emulator/SKILL.mdUpdate Pub/Sub Emulator
-
Update Local Emulator Run the following command to make sure you have the latest version of the pubsub emulator installed via gcloud:
gcloud components update pubsub-emulator -
Locate Emulator Directory The emulator represents a directory likely located at
. You can find the exact path by running the emulator and checking the output, or by inspecting where<gcloud-install-path>/platform/pubsub-emulator
is installed (e.g.gcloud
usually points to a bin directory, and the platform directory is a sibling ofwhich gcloud
). Verify the version by running the emulator or checking thebin
file if it exists.VERSION -
Package the Emulator Zip the directory found in the previous step. Name it
. Ensure the zip structure is such that the top-level directory inside the zip ispubsub-emulator-<version>.zip
. Note: The existing code expects the binary atpubsub-emulator
inside the cache, which usually means the zip contains a root folderpubsub-emulator-<version>/pubsub-emulator/bin/cloud-pubsub-emulator
.pubsub-emulator -
Upload to Storage Upload the zip file to the Firebase preview bucket:
gcloud storage cp pubsub-emulator-<version>.zip gs://firebase-preview-drop/emulator/Make the file publicly readable if necessary (usually the bucket permissions handle this, or use
).gcloud storage objects update ... --add-acl-grant=entity=allUsers,role=READERNote: For the version 0.8.27 update, this step was already done.
-
Calculate Metadata Calculate the file size in bytes, MD5 checksum, and SHA256 checksum of the zip file.
# Size ls -l pubsub-emulator-<version>.zip # MD5 (macOS: `md5`, Linux: `md5sum`) md5 pubsub-emulator-<version>.zip # SHA256 (macOS: `shasum -a 256`, Linux: `sha256sum`) shasum -a 256 pubsub-emulator-<version>.zip -
Update Configuration Edit
:src/emulator/downloadableEmulatorInfo.json- Update
to the new version.pubsub.version - Update
.pubsub.expectedSize - Update
(MD5).pubsub.expectedChecksum - Update
.pubsub.expectedChecksumSHA256 - Update
andpubsub.remoteUrl
.pubsub.downloadPathRelativeToCacheDir
- Update
-
Verify Run the emulators to ensure the new version is downloaded and starts correctly.
firebase emulators:start --only pubsub -
Add a Changelog Entry Add a changelog entry to
like '- Updated Pub/Sub emulator to version <version>'CHANGELOG.md