Repository navigation
Refresh GHCP App Modernization MicroHack: CLI-first, no-fork, live-tested - #602
Merged
Marco Weber (qxsch) merged 1 commit intoNov 5, 2026
Conversation
…sted Challenges: - Challenge 1 rewritten around GitHub Copilot CLI and the modernize CLI: custom agents, skills, and MCP config are authored in the target repo under .github/ and verified from the terminal, ending with a skill-detection dry-run via 'modernize plan create'. - Challenge 2 moved to the no-fork flow: samples are cloned directly from Azure-Samples onto a local 'modernize' branch, repos.json uses local path entries, and the assessment guidance (report location, target versions, timing) is corrected. - Challenge 3 rewritten to the documented local flow: batch Plan with 'Keep the plan local' and per-repo execution, replacing the PR-merge and plan-branch steps that cannot work with read-only upstreams. Adds resource-group guidance and an ImageSharp Release-license tip. Lab automation: - Fix the nonexistent Microsoft.Apps provider name that crashed the shared hook, add Microsoft.OperationalInsights and Microsoft.ManagedIdentity, and wait for the asynchronous registration. - Switch deploymentType to resourcegroup-with-subscriptionowner so the modernize CLI can create resource groups; remove the empty main.bicep. Environment setup and templates: - Document GitHub Copilot CLI installation and /login (device-code flow in Codespaces, env-token precedence); declare Codespaces the supported environment; expand troubleshooting. - Add a Copilot CLI MCP config template with README, portable agent tool names, current targets (.NET 10, Java 25 / Spring Boot 4), and the corrected appmod-cve-assessment tool name. Cleanup: stale links fixed, finish.md recaps aligned, 16 orphaned or stale screenshots and a duplicate fundamentals copy removed, .gitignore covers repos/ and .github/modernize/. Validation: all three challenges executed end to end with the modernize CLI (v1.0.76) - live batch assessment, both framework upgrades with passing tests, and both Azure Container Apps deployments verified with HTTP 200.
Contributor
Author
|
@microsoft-github-policy-service agree company="Microsoft" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
This refreshes the GHCP App Modernization MicroHack (
03-Azure/01-01-App Innovation/03_GHCPAppModernization) end to end, driven by live-run coach feedback and a full hands-on test of all three challenges with the real tooling.Challenge 1 — Fundamentals
.github/agents/), skills (.github/skills/), and MCP (.github/mcp.json) are authored in the target repo and verified with GitHub Copilot CLI (/agent,/skills list,/mcp list); VS Code remains as an aside. The previous success criterion (confirmingappmod-*tools from the VS Code extensions) was unmeetable in the recommended Codespace, which doesn't install those extensions.modernize plan createskill-detection dry-run, proving the authored skill is picked up ("location": "project"in the plan'stasks.json).Challenge 2 — Batch upgrade
Azure-Samplesonto a localmodernizebranch (matching the official modernization-agent quickstart);repos.jsonuses localpathentries so the CLI operates on the working copies..github/modernize/assessment/reports-*/), target-version guidance (.NET 10 / OpenJDK 25 on the assess configuration page), realistic timing, and the cloud-agent caveat (cloud delegation requires github.com URLs).Challenge 3 — Modernize & deploy
Lab automation
shared-deploy-lab.ps1registered the nonexistentMicrosoft.Appsprovider with-ErrorAction Stop, which crashed the whole shared hook — so nothing got registered (the root cause of the "resource providers are not registered" feedback). Fixed toMicrosoft.App, addedMicrosoft.OperationalInsightsandMicrosoft.ManagedIdentity, and the script now waits for the asynchronous registration to complete.deploymentTypeswitched toresourcegroup-with-subscriptionownerso the modernize CLI can create resource groups during Challenge 3. Removed the emptymain.bicep.Environment setup, templates, cleanup
/logindevice-code flow in Codespaces, env-token precedence pitfalls,/userverification); Codespaces declared the supported environment with local setups best-effort.templates/mcp/copilot-cli-mcp.json+ README) alongside the VS Code variant; portable agent tool names (read/search/edit/execute); targets bumped to .NET 10 / Java 25 / Spring Boot 4; correctedappmod-cve-assessmenttool name; quoted a YAML-breaking skill-name placeholder.finish.mdrecaps aligned;.gitignorenow coversrepos/and.github/modernize/.Tested end to end (not just rewritten)
All three challenges were executed with the modernize CLI (v1.0.76) against a real Azure subscription:
.github/modernize/assessment/reports-*/).Known upstream issues (out of scope for this PR, noted for maintainers)
.devcontainer/.../welcome.shlooks forREADME.md, but this hack shipsReadme.md(case mismatch on Linux).Azure-Samples/PhotoAlbum's README contains internal-only instructions and a dead clone URL.squad-*workflows and example agents that surprise participants (a warning was added to the walkthrough).Value cannot be null (Parameter 'path1')) — a troubleshooting row with the remedy was added.