Fast Path Pipeline: Deterministic deploy templates

Open
#552 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 2 days

Nobody has claimed this yet.

  • #564 by @gambtho — closed without merging

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
64/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Quiet
Tech stack
azure, github-actions, kubernetes, typescript

Research direction

Start by locating ContainerConfig and the existing aks-devhub workflow pattern, then create fastPathTemplates.ts with the three named pure generators. Add comprehensive tests for the generated workflow and manifests, including the listed permissions, pinned action, paths, substitutions, and configured deployment and service fields; done means config-in strings match the tested templates.

Written by the indexing model from the issue text.

Description

bug documentation triage

Part of #557

Problem

The Copilot agent generates a different workflow each time — and the generated workflows have recurring bugs: single-job design, missing permissions, unpinned kubelogin, fragile sed-based image substitution, and no explicit Dockerfile path. These are the root causes of most deploy failures.

When we already have the user's config (cluster, namespace, ACR, Dockerfile path, container settings), we can generate a correct workflow and manifests deterministically from tested templates.

Changes

Create fastPathTemplates.ts with three pure functions:

  • generateDeployWorkflow() — produces a two-job workflow (buildImage + deploy) based on the proven aks-devhub pattern. Fixes all known bugs: pinned kubelogin-version: 'v0.1.6', Azure/k8s-deploy@v5 for image substitution, actions: read permission, explicit DOCKER_FILE and BUILD_CONTEXT_PATH env vars, continue-on-error on annotations.
  • generateDeploymentManifest() — Deployment YAML parameterized from ContainerConfig (replicas, resources, probes, security context, anti-affinity, pipeline annotations)
  • generateServiceManifest() — Service YAML with configured type, ports, and selector

All functions are pure (config in → string out) with comprehensive test coverage.

Dominant language
TypeScript
Stars
115
Forks
31
Avg merge
2d 17h
Merged PRs (30d)
16

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from Azure/aks-desktop

All issues in Azure/aks-desktop

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.