mit einem Klick
dataconnect-emulator-upgrade
// Automates updating the firebase-dataconnect emulator and firebase-tools version in CI, including creating a branch, committing the updates, pushing to GitHub, and creating a pull request.
// Automates updating the firebase-dataconnect emulator and firebase-tools version in CI, including creating a branch, committing the updates, pushing to GitHub, and creating a pull request.
| name | dataconnect_emulator_upgrade |
| description | Automates updating the firebase-dataconnect emulator and firebase-tools version in CI, including creating a branch, committing the updates, pushing to GitHub, and creating a pull request. |
You are a principal DevOps and automation agent specializing in CI/CD pipelines, package/dependency management, and Git release workflows.
Update the firebase-dataconnect module's dataconnect emulator used during builds and code generation and firebase-tools dependencies used in GitHub Actions to their latest versions.
Follow these steps sequentially:
Backup Versions JSON:
Copy ./gradleplugin/plugin/src/main/resources/com/google/firebase/dataconnect/gradle/plugin/DataConnectExecutableVersions.json to ./gradleplugin/plugin/src/main/resources/com/google/firebase/dataconnect/gradle/plugin/DataConnectExecutableVersions.old.json.
Update Emulator Versions JSON:
Run the update script to update the versions JSON file DataConnectExecutableVersions.json. Use a shell command to execute: ./scripts/update_versions_json.sh
Determine Changed Default Emulator Version:
Determine if the defaultVersion in DataConnectExecutableVersions.json changed.
To do this, use the jq command on the updated DataConnectExecutableVersions.json and its backup DataConnectExecutableVersions.old.json.
Let's call the new defaultVersion "<new_default>" and the old default version "<old_default>".
If the default version did not change, then you are done: report that the default version did not change, and abort.
Determine New Emulator Versions:
Determine the versions that were added to DataConnectExecutableVersions.json.
To list the versions from a json file, run this command: jq -r '.versions[].version' <path to json file> | sort -u.
List the versions in the updated DataConnectExecutableVersions.json and its backup DataConnectExecutableVersions.old.json.
Let's call the list of new versions "<added_versions_list>".
Create a Git Branch:
Create a new git branch named Emulator_<new_version> where <new_version> is the new default version with dots replaced by underscores (e.g., Emulator_3_2_1).
Commit Emulator Update:
Add the JSON file and run git commit to commit the emulator version changes. The commit message MUST conform exactly to this template:
DataConnectExecutableVersions.json: defaultVersion changed to "<new_default>" (was "<old_default>") and added versions <added_versions_list>
Example: DataConnectExecutableVersions.json: defaultVersion changed to "3.2.1" (was "3.1.3") and added versions 3.1.4, 3.2.0, and 3.2.1
Fetch Latest firebase-tools Version:
Determine the latest release version number of the firebase-tools repository using the GitHub CLI gh or by fetching the latest release for Firebase/firebase-tools. Do not include the 'v' prefix in the version number (e.g., use 15.8.0 instead of v15.8.0).
Update Central firebase-tools Version File:
Edit ci/firebase-tools-version.txt. Change the version number in this file to the latest release version number determined in the previous step. Note what the previous version was.
Commit firebase-tools Update:
Add the version file and git commit the changes using a commit message that conforms exactly to this template:
firebase-tools-version.txt: updated firebase-tools to <new_tools_version> (was <old_tools_version>)
Example: firebase-tools-version.txt: updated firebase-tools to 15.8.0 (was 15.6.0)
Push Changes to GitHub:
Push the changes up to the remote origin by running this exact command, substituting Emulator_X_Y_Z appropriately:
git push -u origin Emulator_X_Y_Z:dataconnect/Emulator_X_Y_Z
Create GitHub Pull Request:
Create a GitHub pull request by running this exact command (substitute the correct version variables):
gh pr create --body "" --title "dataconnect: ci: upgrade data connect emulator to <new_default> (was <old_default>) and firebase-tools to <new_tools_version> (was <old_tools_version>)" --assignee '@me' --label "api: dataconnect" --label "main-merge-ack" --label "no-changelog"