一键导入
release-process
// Guide for cutting a new release of the Cloud Foundation Fabric (CFF) repository. Use this skill when asked to create, prepare, or draft a new release.
// Guide for cutting a new release of the Cloud Foundation Fabric (CFF) repository. Use this skill when asked to create, prepare, or draft a new release.
| name | release-process |
| description | Guide for cutting a new release of the Cloud Foundation Fabric (CFF) repository. Use this skill when asked to create, prepare, or draft a new release. |
This skill guides maintainers through the process of cutting a new release for the Cloud Foundation Fabric (CFF) repository.
CRITICAL: Release names and tags MUST ALWAYS be prefixed with
v(e.g.,v55.1.0,v56.0.0).
gh auth token).uv (recommended) or a standard Python virtual environment with tools/requirements.txt installed.Start from the master branch and ensure you are up to date:
git checkout master
git pull
Identify the latest released version by extracting it from the default-versions.tf file:
LATEST_RELEASE=$(grep -oP '(?<=# Fabric release: ).*' default-versions.tf)
echo "Latest release is: $LATEST_RELEASE"
Run the changelog script, specifying the bump type (e.g., major, minor, patch):
# Set your bump type here (major, minor, or patch)
BUMP_TYPE="minor"
# Option A: Using uv (Recommended)
uv run tools/changelog.py --release-from $LATEST_RELEASE --bump $BUMP_TYPE --write --token $(gh auth token)
# Option B: Using a standard virtual environment
./tools/changelog.py --release-from $LATEST_RELEASE --bump $BUMP_TYPE --write --token $(gh auth token)
Review the changes:
Run git diff CHANGELOG.md and carefully inspect the output. Look for:
If you find issues:
changelog.py command above.Once the changelog is correct, extract the newly generated release version from the top of the changelog and bump the repository versions:
NEW_RELEASE=$(grep -oP '(?<=^## \[).*(?=\] - )' CHANGELOG.md | head -n 1)
# Ensure it has the 'v' prefix
if [[ $NEW_RELEASE != v* ]]; then NEW_RELEASE="v$NEW_RELEASE"; fi
echo "New release is: $NEW_RELEASE"
# Option A: Using uv (Recommended)
uv run tools/versions.py --fabric-release $NEW_RELEASE --write-defaults
# Option B: Using a standard virtual environment
./tools/versions.py --fabric-release $NEW_RELEASE --write-defaults
Commit the prepared release files and push to master:
git add CHANGELOG.md default-versions.tf
git commit -m "prep $NEW_RELEASE"
git push origin master
Important: Wait for the GitHub Actions workflows on master to finish successfully before proceeding to the next step. You can monitor the progress directly from your terminal:
# Watch the latest workflow run on the master branch
gh run watch $(gh run list --branch master --limit 1 --json databaseId -q '.[0].databaseId')
You can create the release either automatically via the GitHub CLI or manually via the GitHub UI.
This script extracts any "BREAKING CHANGES" from the changelog and converts the heading to Title Case.
# 1. Extract the section for the new release from CHANGELOG.md
# We use awk to grab everything from the new release header until the next release header
RELEASE_NOTES=$(awk "/^## \[v$NEW_RELEASE\]/{flag=1; next} /^## \[v/{flag=0} flag" CHANGELOG.md)
# 2. Extract just the BREAKING CHANGES section (if any)
BREAKING_CHANGES=$(echo "$RELEASE_NOTES" | awk '/^### BREAKING CHANGES/{flag=1; print; next} /^### /{flag=0} flag')
# 3. Format breaking changes
if [ -n "$(echo "$BREAKING_CHANGES" | tr -d '[:space:]')" ]; then
# Convert "### BREAKING CHANGES" to "## Breaking Changes"
FORMATTED_BREAKING_CHANGES=$(echo "$BREAKING_CHANGES" | sed 's/^### BREAKING CHANGES/## Breaking Changes/')
echo "$FORMATTED_BREAKING_CHANGES"
fi
CRITICAL: Show the extracted and formatted breaking changes to the user and wait for their approval before proceeding to create the release.
Once approved, run the appropriate command to create the release.
If there were breaking changes:
gh release create "$NEW_RELEASE" --title "$NEW_RELEASE" --generate-notes --notes "$FORMATTED_BREAKING_CHANGES"
If there were no breaking changes:
gh release create "$NEW_RELEASE" --title "$NEW_RELEASE" --generate-notes
Go to the GitHub Releases UI and configure the release:
v56.0.0).CHANGELOG.md contains a "BREAKING CHANGES" section for this release, copy it, paste it at the top of the generated release notes, and change the heading to "## Breaking Changes".Click Publish release.
Guides the user step-by-step through the prerequisites for the FAST 0-org-setup stage, supporting both Standard GCP and Google Cloud Dedicated (GCD) environments. Use when a user asks to prepare or run prerequisites for 0-org-setup or bootstrap the FAST landing zone.
A simple skill to test if the agent correctly executes tools.
A wizard to help users configure FAST (Fabric Architecture Setup Tool) step-by-step. Use this skill when asked to configure FAST, run the FAST wizard, or setup FAST.
Generates idiomatic Cloud Foundation Fabric (CFF) Terraform code using CFF modules. Use when users ask to create GCP resources, use Fabric modules, or generate Terraform code for Google Cloud.