feat: path selection UI + wizard routing for fast path pipeline#566
Draft
feat: path selection UI + wizard routing for fast path pipeline#566
Conversation
Pipeline identities need AKS RBAC Writer for annotation permissions regardless of whether Azure RBAC is enabled on the cluster. Add an isPipeline flag to IdentityRoleContext that forces inclusion of AKS RBAC Writer in the normal namespace branch.
Thread the isPipeline flag from useWorkloadIdentitySetup through EnsureIdentityWithRolesConfig to computeRequiredRoles so GitHub pipeline identities always get AKS RBAC Writer.
Add a function to retrieve the kubelet identity's objectId from an AKS cluster. This is needed to assign AcrPull so nodes can pull container images built by the pipeline from ACR.
When isPipeline is true and an ACR is configured, resolve the cluster's kubelet identity and assign AcrPull so nodes can pull container images built by the pipeline. This is non-fatal if it fails, as the user may have already configured ACR integration. Closes #550
…lbacks
Add input validation to getKubeletIdentityObjectId, replace console.warn
with onStatusChange('warning-kubelet-acr-pull') for proper UI feedback,
and remove isPipeline from managed namespace role computation. Adds
comprehensive tests for error paths and edge cases.
Uses the Git Trees API with recursive traversal to find all files named "Dockerfile" (case-insensitive) in a repository, returning their paths.
Adds dockerfilePaths field to RepoReadiness interface and integrates findDockerfiles into checkRepoReadiness. When a default branch is provided, Dockerfile discovery runs in parallel with existing file existence checks.
Provides deriveBuildContext utility and useDockerfileDiscovery hook that manages Dockerfile selection state. Auto-selects when exactly one Dockerfile is found, and allows manual selection with build context override for multi-Dockerfile repos.
Renders Dockerfile discovery results with auto-selection for single Dockerfile repos and a dropdown for multi-Dockerfile repos. Includes an editable build context field derived from the selected path.
…discovery' and 'thgamble/fast-path-templates' into thgamble/fast-path-state-machine
9-state machine with transition table, localStorage persistence, RETRY logic, and transient state handling — mirrors the existing useGitHubPipelineState patterns.
Creates branch, generates deterministic workflow + K8s manifests from templates, pushes all files, and opens PR. Cleans up branch on failure.
Wires together fast path state machine, PR polling, workflow polling, and deployment health. Handles deploy (generate + create PR + dispatch) and redeploy callbacks with in-flight guards.
…ploy Tests cover happy path, error handling, in-flight guard, and state-driven PR merge transition. Fixes eager ref sync so deployment state ref stays current within the async handleDeploy callback.
Adds optional steps prop (string array) so fast path and agent path can show different step labels. Exports AGENT_PATH_STEPS and FAST_PATH_STEPS constants. Widens activeStep to number.
Three-option decision point shown when Dockerfile is detected: Deploy now (recommended), Deploy now + AI suggestions, Full AI generation. Card-based layout with selection state matching existing wizard style.
When Dockerfiles detected, shows PathSelectionStep at ReadyForSetup. User chooses: Deploy now, Deploy now + AI, or Full AI generation. Fast path choices use useFastPathOrchestration for the deploy flow with dedicated progress/deployed/error states. Agent path continues with existing flow. Dynamic step labels switch between paths.
5 tasks
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.
Summary
Adds the user-facing UI for the fast path pipeline — when a Dockerfile is detected, users choose between three deployment paths directly in the wizard.
WizardShell— now accepts dynamicstepsprop (string array) so fast path and agent path show different step labels ("Connect Source → Configure → Deploy" vs "Connect Source → Set up Copilot Agent → Review & Merge")PathSelectionStep— card-based 3-option decision point: Deploy now (recommended, ~3-5 min), Deploy now + AI suggestions (~3-5 min + async), Full AI generation (~15-40 min)GitHubPipelineWizardrouting — atReadyForSetup, whendockerfilePathsdetected, showsPathSelectionStep. Fast path choices wire touseFastPathOrchestrationwith dedicated generating/PR/deploy/deployed states. Agent path continues with existing flow unchanged. Includes Dockerfile confirmation with build context override.Changes Made
WizardShell.tsx—stepsprop,AGENT_PATH_STEPS/FAST_PATH_STEPSexports,activeStepwidened tonumberPathSelectionStep.tsx— 3-option selection UI with recommended badgeGitHubPipelineWizard.tsx— fast path state management,renderFastPathContent(), conditional footer actions, dynamic step labels,DockerfileConfirmationintegrationDependencies
Related Issues
Part of #557 (Fast Path Pipeline)
Closes #554
Test Plan
🤖 Generated with Claude Code