Skip to content

Commit 40cb46c

Browse files
flanakingithub-actions[bot]copilot-pull-request-reviewer[bot]RolandKrummenacher
authored
Prep for v14 release (#2109)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: copilot-pull-request-reviewer[bot] <copilot-pull-request-reviewer[bot]@users.noreply.github.com> Co-authored-by: RolandKrummenacher <RolandKrummenacher@users.noreply.github.com>
1 parent e02179a commit 40cb46c

82 files changed

Lines changed: 83945 additions & 282 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.claude/commands/release.md‎

Lines changed: 80 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
---
22
description: Walk through the release checklist interactively
3-
allowed-tools: Read, Grep, Bash(git fetch *), Bash(git checkout *), Bash(git switch *), Bash(git pull *), Bash(git add *), Bash(git commit *), Bash(git push *), Bash(git status*), Bash(git branch *), Bash(gh issue view *), Bash(pwsh -Command ./src/scripts/*), Bash(pwsh -Command "./src/scripts/*)
3+
allowed-tools: Read, Grep, Write, Edit, Bash(git fetch *), Bash(git checkout *), Bash(git switch *), Bash(git pull *), Bash(git add *), Bash(git commit *), Bash(git push *), Bash(git status*), Bash(git diff*), Bash(git log*), Bash(git branch *), Bash(gh issue view *), Bash(gh issue edit *), Bash(gh issue comment *), Bash(gh issue close *), Bash(gh pr view *), Bash(gh pr list *), Bash(pwsh -Command ./src/scripts/*), Bash(pwsh -Command "./src/scripts/*")
44
---
55

66
# Release
77

88
## Phase 1: Setup
99

10-
Fetch origin and create a release prep branch from `origin/dev` (e.g., `{username}/v14`). If the branch already exists locally, switch to it and pull.
10+
Fetch origin and create a release prep branch (`{username}/{versionTag}-prep`, e.g., `flanakin/v14-prep`) from `origin/dev`. If the branch already exists locally, switch to it and pull. Push the release prep branch. DO NOT push to origin/dev directly!
1111

1212
```bash
1313
pwsh -Command "./src/scripts/Start-Release.ps1 -OutputFile (Join-Path ([System.IO.Path]::GetTempPath()) 'ftk-release.json')"
@@ -47,11 +47,7 @@ Group items by topic, then present via AskUserQuestion. Use the version tag from
4747
- **Options:** "Keep in {version} (Recommended)" or "Push to {next version} (Recommended)" (whichever you recommend first), the other option, and "Investigate further".
4848
- If "Investigate further" is chosen, fetch details via `gh issue view {number}`, provide deeper analysis, and re-present.
4949

50-
**After triage:** Report which items are staying and which are being pushed. Do NOT move milestones — just report for the user to act on.
51-
52-
### Untriaged issues
53-
54-
If `NeedsReview` in the JSON contains any issues, present them for quick triage using the same Round 1/Round 2 pattern. These are issues with the "Needs: Review 👀" label that haven't been triaged yet.
50+
**After triage:** Report which items are staying, pushed, or skipped. Apply changes via `gh issue edit {number} --milestone {version}` — this works for BOTH issues and PRs. Do NOT use `gh pr edit` (not in allowed-tools). Run one command per item, not chained with `&&`.
5551

5652
### Build/test results
5753

@@ -76,16 +72,90 @@ After applying fixes, show a summary of what was changed so the user can review.
7672

7773
### What's new blurbs
7874

79-
Find all `<div id="whats-new">` blocks in `/docs/`. For each: if the tool has a section in the changelog, uncomment the block (if needed) and update the month, year, version tag, and paragraph with a 1-2 sentence summary. If the tool has no changelog section, comment out the block.
75+
Use Grep to find all `<div id="whats-new">` blocks in `/docs/`, then use the Read tool to inspect each match. Do NOT use `sed`, `cat`, `head`, or `tail` — they are not in allowed-tools. For each block: if the tool has a section in the changelog, uncomment the block (if needed) and update the month, year, version tag, and paragraph with a 1-2 sentence summary. If the tool has no changelog section, comment out the block.
76+
77+
### FinOps hubs documentation
78+
79+
Review the changelog's FinOps hubs section and update the following files for any applicable changes. Hub schema version changes (e.g., v1_0 → v1_2) are the primary trigger — update the upgrade guide (steps 7 and 8), data model, data processing, and compatibility chart. Also review for other changelog-driven updates like new datasets, renamed columns, or deprecated functions.
80+
81+
- @docs-mslearn/toolkit/hubs/upgrade.md
82+
- @docs-mslearn/toolkit/hubs/data-model.md
83+
- @docs-mslearn/toolkit/hubs/data-processing.md
84+
- @docs-mslearn/toolkit/hubs/compatibility.md
85+
86+
### New tool check
87+
88+
If `NewTools` in the JSON lists any new tools (tool sections in this release's changelog that weren't in the previous release), present via AskUserQuestion:
89+
90+
- **Header:** "New tools"
91+
- **Question:** "{count} new tool(s) in this release: {names}. These may need marketing pages, MS Learn docs, TOC entries, and an advisory council update. Are all set up?"
92+
- **Options:** "Yes, all done", "No, help me set them up", "Skip for now"
93+
94+
If the user chooses "No, help me set them up":
8095

81-
Show a summary of all changelog and what's new changes for the user to review, then ask via AskUserQuestion whether to commit and push to the prep branch.
96+
1. For each new tool, ask via AskUserQuestion what type it is (new standalone tool, new open data file, new sub-tool like a PBI report or workbook or hub add-on).
97+
2. Based on the type, check if MS Learn and marketing pages exist. Report what's missing.
98+
3. Enter plan mode to create missing pages and update TOC/advisory council. Stage these changes for the upcoming Commit and push step (don't commit separately).
99+
4. After plan mode executes, summarize what was added and say "Review changes and say 'done' when ready to proceed."
100+
101+
If the user chooses "Skip for now", note it in the release readiness summary as an outstanding item so it isn't forgotten.
102+
103+
### Commit and push
104+
105+
Show a summary of all changelog, what's new, hubs docs, and any new tool page changes for the user to review, then ask via AskUserQuestion whether to commit and push to the prep branch. This must happen AFTER the new tool check so any plan-mode-created files land in the same commit.
82106

83107
### Next actions
84108

85-
After all triage and build/test results are reported, analyze the kept milestone items and suggest concrete next actions:
109+
After commit and push, analyze the kept milestone items and suggest concrete next actions:
86110

87111
- PRs from others awaiting the user's review
88112
- The user's PRs that have reviewer feedback to address
89113
- Issues with no open PRs and no one actively working them
90114

91115
Present as a prioritized list — no AUQ needed, just a summary the user can act on.
116+
117+
---
118+
119+
## Release readiness
120+
121+
Update the release tracking issue checkboxes:
122+
123+
1. Run `gh issue view {number} --json body` and capture the output. Parse the JSON to extract the `body` field, then write it to `/tmp/release-issue-body.md` using the Write tool (not shell redirection).
124+
2. Read the file with the Read tool. Each `/release`-managed checkbox in the template has an HTML comment label like `<!-- release:core -->`, `<!-- release:finalize -->`, or `<!-- release:package -->`. To mark a step complete, find the line containing the matching label and change its `- [ ]` to `- [x]`. Use the Edit tool to write the updated body back to the file. In Phase 2 Release readiness, mark `release:core` complete.
125+
3. Run `gh issue edit {number} --body-file /tmp/release-issue-body.md` to push the updates.
126+
127+
Then present a summary and next action via AskUserQuestion:
128+
129+
- **Header:** "Next step"
130+
- **Question:** Summary of release status: triage results, build/test results, changelog and docs updates, items still outstanding (including any skipped new tool setup). End with "What would you like to do next?"
131+
- **Options:** "Continue to finalize release", "Work on outstanding items", "Done for now"
132+
133+
If there are outstanding items (build/test failures not resolved, skipped new tool setup, etc.), recommend "Work on outstanding items" or "Done for now" and explain what needs to be completed before finalizing.
134+
135+
---
136+
137+
## Phase 3: Finalize release
138+
139+
This phase ONLY runs if ALL prerequisites are met (build passes, tests pass, changelog reviewed, docs updated) and the user chooses "Continue to finalize release".
140+
141+
### Package release
142+
143+
Run the packaging command:
144+
145+
```bash
146+
pwsh -Command "./src/scripts/Package-Toolkit.ps1 -Build -CopyFiles"
147+
```
148+
149+
If it fails, show the error and ask whether to investigate or skip.
150+
151+
### Manual steps reminder
152+
153+
After packaging succeeds, inform the user of remaining manual steps documented in the release checklist issue (include a link):
154+
155+
1. Power BI packaging
156+
2. Publish release
157+
3. Publish announcements
158+
159+
### Final issue update
160+
161+
Update the release tracking issue checkboxes for finalize-phase items using the same label-based process as Release readiness. Mark `release:finalize` and `release:package` complete. Then report completion and wish the user well.

‎.github/ISSUE_TEMPLATE/-internal-only--release-checklist.md‎

Lines changed: 38 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -59,38 +59,40 @@ Status icons:
5959

6060
## 🔜 Core features
6161

62-
- [ ] Review issues and PRs assigned to the [target milestone](https://github.com/microsoft/finops-toolkit/milestones).
63-
- [ ] Create a new milestone for the next monthly release.
64-
- [ ] Move issues that cannot be resolved in time to a new milestone.
65-
- [ ] Submit PRs for issues that can be resolved.
66-
- [ ] Complete [open PRs](https://github.com/microsoft/finops-toolkit/pulls) that are ready to be resolved.
67-
- [ ] Confirm there are no pending changes in dev.
68-
69-
```powershell
70-
cd "<root>"
71-
git checkout dev
72-
git status
73-
```
74-
62+
- [ ] <!-- release:core --> Run the `/release` command in Claude Code (or run `Start-Release.ps1` and complete the following manually).
63+
- Create or find the release tracking issue.
64+
- Bump the version number (strip prerelease label): `Update-Version.ps1 -Version {x.y.z}`
65+
- Update commitment discount eligibility data: `Update-CommitmentDiscountEligibility.ps1`
66+
- Update Bicep CLI: `az bicep upgrade`
67+
- Create milestones for next 2 releases if they don't exist.
68+
- Create a release prep branch from `origin/dev`.
69+
- Build templates: `Build-Toolkit.ps1`
70+
- Run tests: `Test-PowerShell.ps1 -Unit -Lint -Integration`
71+
- Triage milestone issues/PRs and PRs without a milestone (keep, push, or skip).
72+
- Triage untriaged issues (items with "Needs: Triage 🔍" label).
73+
- Review changelog against coding guidelines and fix issues.
74+
- If adding a new tool:
75+
- Update the [marketing site landing page](https://github.com/microsoft/finops-toolkit/tree/dev/docs/README.md).
76+
- Add a new page the [marketing site](https://github.com/microsoft/finops-toolkit/tree/dev/docs).
77+
- Add an overview page in [MS Learn documentation](https://github.com/microsoft/finops-toolkit/tree/dev/docs-mslearn/toolkit).
78+
- Update the [MS Learn menu to add new page(s)](https://github.com/microsoft/finops-toolkit/tree/dev/docs-mslearn/TOC.yml).
79+
- Add the new tool's tech lead to the [Advisor council doc](https://github.com/microsoft/finops-toolkit/tree/dev/docs-wiki/Advisory-council.md).
80+
- Update what's new blurbs in `/docs/` marketing pages.
81+
- Update FTK survey IDs: handled by `Update-Version.ps1`.
82+
- Review and update FinOps hubs documentation (upgrade guide, data model, data processing, compatibility).
83+
- Commit and push changes to the prep branch.
84+
- [ ] Submit PRs for issues that can be resolved.
85+
- [ ] Complete [open PRs](https://github.com/microsoft/finops-toolkit/pulls) that are ready to be resolved.
86+
- [ ] Review remaining [milestone](https://github.com/microsoft/finops-toolkit/milestones) issues and PRs. Move any stragglers that won't make the release.
7587
- [ ] Update feature branches and confirm if they're ready for release.
88+
- [ ] Confirm there are no pending changes in `dev`: `cd "<root>" && git checkout dev && git status`
7689
- [ ] Auto-merge feature branch with `dev`: `<root>/src/scripts/Merge-DevBranch.ps1 *`
7790
- ❌ Manually update remaining feature branches: `<root>/src/scripts/Merge-DevBranch.ps1 features/<name>`
7891
- [ ] Build and deploy templates: `<root>/src/scripts/Build-Toolkit.ps1`.
7992
- [ ] Confirm all tests pass: `<root>/src/scripts/Test-PowerShell.ps1 -Unit -Integration`.
8093
- [ ] Confirm if all features are code complete and not missing any functionality required for release.
8194
> _Once in `dev`, the feature is considered part of the next release and can be pushed out at any time. Any broken features will be reverted._
82-
- [ ] Confirm new or updated functionality is documented in the [changelog](https://github.com/microsoft/finops-toolkit/blob/dev/docs/changelog.md).
83-
> _See the changelog for details about changelog requirements._
84-
- [ ] Confirm new or updated functionality must be documented in the [documentation](https://github.com/microsoft/finops-toolkit/blob/dev/docs).
85-
- [ ] Summarize the monthly changes in the "what's new" section of the marketing pages for each tool.
86-
- [ ] Update the FinOps hubs compatibility guide and upgrade guide.
87-
- [ ] Do a global search and replace for "FTKx.x" for the previous version to replace it with the new version number.
88-
- [ ] If adding a new tool:
89-
- [ ] Update the [marketing site landing page](https://github.com/microsoft/finops-toolkit/tree/dev/docs/README.md).
90-
- [ ] Add a new page the [marketing site](https://github.com/microsoft/finops-toolkit/tree/dev/docs).
91-
- [ ] Add an overview page in [MS Learn documentation](https://github.com/microsoft/finops-toolkit/tree/dev/docs-mslearn/toolkit).
92-
- [ ] Update the [MS Learn menu to add new page(s)](https://github.com/microsoft/finops-toolkit/tree/dev/docs-mslearn/TOC.yml).
93-
- [ ] Add the new tool's tech lead to the [Advisor council doc](https://github.com/microsoft/finops-toolkit/tree/dev/docs-wiki/Advisory-council.md).
95+
- [ ] Confirm new or updated functionality is documented in the [marketing site](https://github.com/microsoft/finops-toolkit/blob/dev/docs) and [MS Learn documentation](https://github.com/microsoft/finops-toolkit/tree/dev/docs-mslearn/toolkit).
9496
- [ ] Merge any feature branches that are ready to `dev`.
9597
- Create a PR to merge the feature branch into `dev`.
9698
- Follow the normal PR process to merge the PR.
@@ -99,15 +101,17 @@ Status icons:
99101

100102
## 🔜 Finalize release
101103

102-
- [ ] Review the [changelog](../docs/_resources/changelog.md) to ensure it encapsulates all changes.
103-
- Move all released changes to an official numbered version section.
104-
- If there are committed changes in a feature branch that you want to mention, add them to an "Unreleased" section.
105-
- [ ] Update the version: `<root>/src/scripts/Update-Version.ps1 [-Major|Minor|Patch]`
106-
- [ ] Build all toolkit templates and resolve any issues: `<root>/src/scripts/Build-Toolkit`
107-
> _This step is optional, but can catch issues earlier. You can also add the `-Build` parameter to the publish command in the next step._
108-
- [ ] Ensure all tests pass: `<root>/src/scripts/Test-PowerShell -Unit -Integration`
109-
- [ ] Package all release files
110-
- [ ] Run `Package-Toolkit.ps1 -Build -CopyFiles -OpenPBI` script.
104+
- [ ] <!-- release:finalize --> Run the `/release` command again in Claude Code (or complete the following manually).
105+
- Review the [changelog](../docs/_resources/changelog.md) to ensure it encapsulates all changes.
106+
- Move all released changes to an official numbered version section.
107+
- If there are committed changes in a feature branch that you want to mention, add them to an "Unreleased" section.
108+
- Update the version: `<root>/src/scripts/Update-Version.ps1 [-Major|Minor|Patch]`
109+
- Build all toolkit templates and resolve any issues: `<root>/src/scripts/Build-Toolkit`
110+
> _This step is optional, but can catch issues earlier. You can also add the `-Build` parameter to the publish command in the next step._
111+
- Ensure all tests pass: `<root>/src/scripts/Test-PowerShell -Unit -Integration`
112+
- [ ] <!-- release:package --> Package all release files (except Power BI): `<root>/src/scripts/Package-Toolkit.ps1 -Build -CopyFiles` script
113+
- [ ] Package Power BI files
114+
- [ ] Run `Package-Toolkit.ps1 -OpenPBI` script.
111115
- [ ] Save and close each Power BI project:
112116
- Select the `<root>/release/pbix` folder.
113117
- Change the file extension to PBIX.

‎.gitignore‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -370,6 +370,7 @@ env/
370370

371371
# AI
372372
.claude/settings.local.json
373+
.claude/scheduled_tasks.lock
373374

374375
# Internal planning docs
375376
/TODO.md

0 commit comments

Comments
 (0)