Skip to content

Commit ba2296a

Browse files
committed
Merge remote-tracking branch 'upstream/main' into pr/Ba4bes/1892-1
2 parents 1049fa8 + 1139a3a commit ba2296a

279 files changed

Lines changed: 14314 additions & 4231 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.

.azure/deployment-plan.md

Lines changed: 190 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,190 @@
1+
# Azure Deployment Plan
2+
3+
> **Status:** Planning
4+
5+
Generated: 2026-04-14
6+
7+
---
8+
9+
## 1. Project Overview
10+
11+
**Goal:** Create and deploy a new production Node.js/TypeScript web application on Azure VMSS with Azure SQL backend, autoscaling, and Application Gateway load balancing.
12+
13+
**Path:** New Project
14+
15+
---
16+
17+
## 2. Requirements
18+
19+
| Attribute | Value |
20+
|-----------|-------|
21+
| Classification | Production |
22+
| Scale | Large (high traffic, autoscaling) |
23+
| Budget | Balanced |
24+
| **Subscription** | Playground - 01 (`4b0a7581-9eea-4d30-a166-f8fac23b6edd`) |
25+
| **Location** | East US |
26+
| OS | Linux (Ubuntu) |
27+
| VM Size | Standard_D4s_v5 (4 vCPUs, 16 GB RAM) |
28+
| Hosting Model | VMSS (Flexible orchestration) |
29+
30+
---
31+
32+
## 3. Components Detected
33+
34+
| Component | Type | Technology | Path |
35+
|-----------|------|------------|------|
36+
| Web App | SSR Web Server | Node.js / TypeScript / Express | `src/web/` |
37+
| Database | Relational DB | Azure SQL | (managed service) |
38+
39+
---
40+
41+
## 4. Recipe Selection
42+
43+
**Selected:** Bicep
44+
45+
**Rationale:** User preference for native Azure IaC. Bicep provides first-class ARM integration, strong typing, and is ideal for VMSS + networking + SQL deployments.
46+
47+
---
48+
49+
## 5. Architecture
50+
51+
**Stack:** VMSS (Virtual Machine Scale Set) + Azure SQL
52+
53+
### Service Mapping
54+
55+
| Component | Azure Service | SKU / Config |
56+
|-----------|---------------|--------------|
57+
| Web App (VMSS) | Microsoft.Compute/virtualMachineScaleSets | Standard_D4s_v5, Flexible orchestration, 2–6 instances |
58+
| Load Balancer | Microsoft.Network/applicationGateways | Application Gateway v2 (L7, TLS offload) |
59+
| Database | Microsoft.Sql/servers + databases | Azure SQL S2 (50 DTU) |
60+
| Virtual Network | Microsoft.Network/virtualNetworks | /16 VNet with subnets for VMSS, AppGW, SQL |
61+
| NSG | Microsoft.Network/networkSecurityGroups | Allow HTTP/HTTPS inbound, restrict SSH |
62+
| Public IP | Microsoft.Network/publicIPAddresses | Standard SKU, static, for AppGW frontend |
63+
64+
### Supporting Services
65+
66+
| Service | Purpose |
67+
|---------|---------|
68+
| Log Analytics | Centralized logging |
69+
| Application Insights | Monitoring & APM |
70+
| Key Vault | Secrets management (DB connection string) |
71+
| Managed Identity | VMSS-to-SQL and VMSS-to-KeyVault auth |
72+
73+
### Autoscale Configuration
74+
75+
| Setting | Value |
76+
|---------|-------|
77+
| Metric | CPU percentage |
78+
| Scale-out threshold | 70% avg CPU for 5 min |
79+
| Scale-in threshold | 30% avg CPU for 10 min |
80+
| Min instances | 2 |
81+
| Max instances | 6 |
82+
| Cooldown | 5 minutes |
83+
84+
### Network Architecture
85+
86+
```
87+
Internet → Public IP → Application Gateway (L7/TLS) → VMSS Subnet → VM instances
88+
89+
SQL Private Endpoint
90+
```
91+
92+
---
93+
94+
## 6. Provisioning Limit Checklist
95+
96+
### Resource Inventory & Quota Validation
97+
98+
| Resource Type | Number to Deploy | Total After Deployment | Limit/Quota | Notes |
99+
|---------------|------------------|------------------------|-------------|-------|
100+
| Microsoft.Compute vCPUs (standardDSv5Family) | 24 (6×4 max) | 24 | 350 | ✅ Fetched from: az vm list-usage |
101+
| Microsoft.Compute vCPUs (Total Regional) | 24 | 180 | 350 | ✅ Fetched from: az vm list-usage |
102+
| Microsoft.Compute/virtualMachines | 6 (max) | 47 | 25,000 | ✅ Fetched from: az vm list-usage |
103+
| Microsoft.Network/virtualNetworks | 1 | 62 | 1,000 | ✅ Fetched from: az network list-usages |
104+
| Microsoft.Network/publicIPAddresses | 1 | 70 | 1,000 | ✅ Fetched from: az network list-usages |
105+
| Microsoft.Network/networkSecurityGroups | 2 | 216 | 5,000 | ✅ Fetched from: az network list-usages |
106+
| Microsoft.Network/loadBalancers (Standard) | 1 (AppGW) | 49 | 1,000 | ✅ Fetched from: az network list-usages |
107+
| Microsoft.Sql/servers | 1 | 2 | 20 per region | ✅ Fetched from: Azure Resource Graph + official docs |
108+
| Microsoft.KeyVault/vaults | 1 | ~1 | 10,000 per region | ✅ Fetched from: official docs |
109+
| Microsoft.OperationalInsights/workspaces | 1 | ~1 | 50 per region | ✅ Fetched from: official docs |
110+
111+
**Status:** ✅ All resources within limits
112+
113+
---
114+
115+
## 7. Execution Checklist
116+
117+
### Phase 1: Planning
118+
- [x] Analyze workspace (new project)
119+
- [x] Gather requirements (production, large, balanced, Linux)
120+
- [x] Confirm subscription and location with user (Playground - 01, eastus)
121+
- [x] Prepare resource inventory
122+
- [x] Fetch quotas and validate capacity
123+
- [x] Scan codebase (N/A — new project)
124+
- [x] Select recipe (Bicep)
125+
- [x] Plan architecture (VMSS + AppGW + SQL)
126+
- [ ] **User approved this plan**
127+
128+
### Phase 2: Execution
129+
- [ ] Research components (load Bicep references)
130+
- [ ] Generate infrastructure files (`infra/main.bicep`, modules)
131+
- [ ] Generate application code (`src/web/` — Express/TypeScript app)
132+
- [ ] Generate custom-data script (cloud-init to bootstrap Node.js on VMs)
133+
- [ ] Generate application configuration
134+
- [ ] Apply security hardening (NSG rules, Key Vault, managed identity)
135+
- [ ] ⛔ Update plan status to "Ready for Validation"
136+
137+
### Phase 3: Validation
138+
- [ ] Invoke azure-validate skill
139+
- [ ] All validation checks pass
140+
- [ ] Update plan status to "Validated"
141+
142+
### Phase 4: Deployment
143+
- [ ] Invoke azure-deploy skill
144+
- [ ] Deployment successful
145+
- [ ] Report deployed endpoint URLs
146+
- [ ] Update plan status to "Deployed"
147+
148+
---
149+
150+
## 8. Files to Generate
151+
152+
| File | Purpose | Status |
153+
|------|---------|--------|
154+
| `.azure/deployment-plan.md` | This plan ||
155+
| `infra/main.bicep` | Root Bicep template ||
156+
| `infra/modules/vmss.bicep` | VMSS + autoscale config ||
157+
| `infra/modules/network.bicep` | VNet, subnets, NSG, AppGW ||
158+
| `infra/modules/sql.bicep` | Azure SQL Server + Database ||
159+
| `infra/modules/monitoring.bicep` | Log Analytics + App Insights ||
160+
| `infra/modules/keyvault.bicep` | Key Vault + secrets ||
161+
| `infra/cloud-init.yaml` | VM bootstrap script (Node.js setup) ||
162+
| `src/web/package.json` | Node.js dependencies ||
163+
| `src/web/tsconfig.json` | TypeScript config ||
164+
| `src/web/src/index.ts` | Express app entry point ||
165+
166+
---
167+
168+
## 9. Cost Estimate
169+
170+
| Resource | Unit Cost | Monthly Estimate |
171+
|----------|-----------|-----------------|
172+
| VMSS (2–6× Standard_D4s_v5) | $0.192/hr per VM | $280–$840 |
173+
| Application Gateway v2 | ~$0.246/hr + data | ~$180 |
174+
| Azure SQL S2 (50 DTU) | ~$75/mo | ~$75 |
175+
| Log Analytics (5 GB/day) | ~$2.30/GB | ~$350 |
176+
| Key Vault | ~$0.03/10K ops | <$5 |
177+
| **Total estimate** | | **~$885–$1,450/mo** |
178+
179+
> 💡 Consider 1-year reserved instances for VMSS to save ~35%.
180+
181+
---
182+
183+
## 10. Next Steps
184+
185+
> Current: Awaiting user approval
186+
187+
1. User approves this plan
188+
2. Generate all infrastructure and application files
189+
3. Validate with azure-validate
190+
4. Deploy with azure-deploy

.github/CODEOWNERS

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,27 +8,28 @@
88
/.github/workflows/ @microsoft/ghcp4a
99

1010
# Plugin skills owners
11-
/plugin/skills/appinsights-instrumentation/ @JasonYeMSFT
12-
/plugin/skills/azure-ai/ @charris-msft
13-
/plugin/skills/azure-aigateway/ @azaslonov
14-
/plugin/skills/azure-cloud-migrate/ @saikoumudi @MadhuraBharadwaj-MSFT
15-
/plugin/skills/azure-compliance/ @saikoumudi
16-
/plugin/skills/azure-compute/ @alex-thompson @rakal-dyh @joybb @rmmue21
17-
/plugin/skills/azure-cost-optimization/ @saikoumudi
18-
/plugin/skills/azure-deploy/ @tmeschter @wbreza @kvenkatrajan @paulyuk
19-
/plugin/skills/azure-diagnostics/ @tmeschter @saikoumudi
20-
/plugin/skills/azure-enterprise-infra-planner/ @Jbrocket @micha31r @arunrab
11+
/plugin/skills/airunway-aks-setup/ @jongio
12+
/plugin/skills/appinsights-instrumentation/ @JasonYeMSFT @jongio
13+
/plugin/skills/azure-ai/ @charris-msft @jongio
14+
/plugin/skills/azure-aigateway/ @azaslonov @jongio
15+
/plugin/skills/azure-cloud-migrate/ @saikoumudi @MadhuraBharadwaj-MSFT @jongio
16+
/plugin/skills/azure-compliance/ @saikoumudi @jongio
17+
/plugin/skills/azure-compute/ @alex-thompson @rakal-dyh @joybb @rmmue21 @jongio
18+
/plugin/skills/azure-cost/ @saikoumudi @jongio
19+
/plugin/skills/azure-deploy/ @tmeschter @wbreza @kvenkatrajan @paulyuk @jongio
20+
/plugin/skills/azure-diagnostics/ @tmeschter @saikoumudi @jongio
21+
/plugin/skills/azure-enterprise-infra-planner/ @Jbrocket @micha31r @arunrab @jongio
2122
/plugin/skills/azure-hosted-copilot-sdk/ @jongio
22-
/plugin/skills/azure-kubernetes/ @saikoumudi @chandraneel
23-
/plugin/skills/azure-kusto/ @saikoumudi
24-
/plugin/skills/azure-messaging/ @kashifkhan
25-
/plugin/skills/azure-prepare/ @tmeschter @wbreza @kvenkatrajan
26-
/plugin/skills/azure-quotas/ @rakal-dyh
27-
/plugin/skills/azure-rbac/ @JasonYeMSFT @msalaman
28-
/plugin/skills/azure-resource-lookup/ @charris-msft
29-
/plugin/skills/azure-resource-visualizer/ @tmeschter
30-
/plugin/skills/azure-storage/ @charris-msft
31-
/plugin/skills/azure-upgrade/ @MadhuraBharadwaj-MSFT @saikoumudi
32-
/plugin/skills/azure-validate/ @wbreza @tmeschter @kvenkatrajan
33-
/plugin/skills/entra-app-registration/ @JasonYeMSFT @kvenkatrajan
34-
/plugin/skills/microsoft-foundry/ @ankitbko @tendau @XOEEst
23+
/plugin/skills/azure-kubernetes/ @saikoumudi @chandraneel @gambtho @jongio
24+
/plugin/skills/azure-kusto/ @saikoumudi @jongio
25+
/plugin/skills/azure-messaging/ @kashifkhan @jongio
26+
/plugin/skills/azure-prepare/ @tmeschter @wbreza @kvenkatrajan @jongio
27+
/plugin/skills/azure-quotas/ @rakal-dyh @jongio
28+
/plugin/skills/azure-rbac/ @JasonYeMSFT @msalaman @jongio
29+
/plugin/skills/azure-resource-lookup/ @charris-msft @jongio
30+
/plugin/skills/azure-resource-visualizer/ @tmeschter @jongio
31+
/plugin/skills/azure-storage/ @charris-msft @jongio
32+
/plugin/skills/azure-upgrade/ @MadhuraBharadwaj-MSFT @saikoumudi @jongio
33+
/plugin/skills/azure-validate/ @wbreza @tmeschter @kvenkatrajan @jongio
34+
/plugin/skills/entra-app-registration/ @JasonYeMSFT @kvenkatrajan @jongio
35+
/plugin/skills/microsoft-foundry/ @ankitbko @tendau @XOEEst @jongio @anchenyi @XiaofuHuang

.github/aw/actions-lock.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,16 @@
55
"version": "v8",
66
"sha": "ed597411d8f924073f98dfc5c65a23a2325f34cd"
77
},
8+
"actions/github-script@v9": {
9+
"repo": "actions/github-script",
10+
"version": "v9",
11+
"sha": "373c709c69115d41ff229c7e5df9f8788daa9553"
12+
},
813
"actions/github-script@v9.0.0": {
914
"repo": "actions/github-script",
1015
"version": "v9.0.0",
1116
"sha": "d746ffe35508b1917358783b479e04febd2b8f71"
1217
},
13-
"github/gh-aw-actions/setup@v0.68.1": {
14-
"repo": "github/gh-aw-actions/setup",
15-
"version": "v0.68.1",
16-
"sha": "2fe53acc038ba01c3bbdc767d4b25df31ca5bdfc"
17-
},
1818
"github/gh-aw/actions/setup@v0.68.1": {
1919
"repo": "github/gh-aw/actions/setup",
2020
"version": "v0.68.1",

.github/instructions/skill-files.instructions.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ metadata:
2525
- **description**: 1-1024 characters, explain WHAT the skill does and WHEN to use it. Include trigger phrases.
2626
- **license**: Required for all skills. Use `MIT` unless there is a documented exception.
2727
- **metadata.author**: Recommended value is `Microsoft`.
28-
- **metadata.version**: Semver format (`X.Y.Z`). Set to `"1.0.0"` for new skills. Must be bumped in the same PR that modifies the skill.
28+
- **metadata.version**: Semver format (`X.Y.Z`). Set to `"1.0.0"` for new skills. For skills under `plugin/`, versions are stamped automatically at build time by NBGV — use `"0.0.0-placeholder"` in source. For skills elsewhere (e.g., `.github/skills/`), set a real version and bump it in the same PR that modifies the skill.
2929

3030
## Size Limits
3131

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
---
2+
name: investigate-integration-test
3+
description: "Investigate a failing integration test from a GitHub issue. Downloads logs/artifacts, analyzes the failure, examines relevant skills, and suggests fixes. TRIGGERS: investigate integration test, debug integration test, failing integration test, test failure investigation, diagnose test failure, analyze test issue"
4+
license: MIT
5+
metadata:
6+
author: Microsoft
7+
version: "1.0.0"
8+
---
9+
10+
# Integration Test Investigation
11+
12+
Investigates a failing integration test given a GitHub issue in `microsoft/GitHub-Copilot-for-Azure`.
13+
14+
## When to Use This Skill
15+
16+
- A GitHub issue links to a failing integration test run
17+
- You need to diagnose why an integration test is failing
18+
- You want to understand a test failure before implementing a fix
19+
20+
## Steps
21+
22+
1. Read the GitHub issue.
23+
2. Download the test logs and artifacts from the linked run.
24+
3. Look through the logs/artifacts and analyze the test with the prompt specified in the issue to diagnose the failure.
25+
4. Examine the relevant skills under `plugin/skills` for context.
26+
5. Offer a suggested fix for each identified problem. Do not implement any fixes without the user's approval.
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
---
2+
name: submit-skill-fix-pr
3+
description: "Submit a pull request with skill fixes. Validates skill structure, bumps versions, and creates a PR with a proper description. TRIGGERS: submit skill fix, create fix PR, skill fix pull request, submit PR, push skill fix"
4+
license: MIT
5+
metadata:
6+
author: Microsoft
7+
version: "1.0.0"
8+
---
9+
10+
# Submit Skill Fix PR
11+
12+
Creates a pull request after committing skill fixes in `microsoft/GitHub-Copilot-for-Azure`.
13+
14+
## When to Use This Skill
15+
16+
- You have committed skill fixes and need to submit a PR
17+
- You need to validate skill structure before pushing
18+
- You want to create a properly formatted fix PR
19+
20+
## Steps
21+
22+
1. Install NPM dependencies in the `scripts` directory, if necessary.
23+
2. From the `scripts` directory run `npm run frontmatter` and `npm run references` to validate the skill structure. Fix and commit any problems.
24+
3. Ensure that skill version has been bumped for any updated SKILL.md.
25+
4. Push the branch to origin and create a PR into upstream. The PR description should include:
26+
1. A brief description of the problem(s).
27+
2. A brief description of the fix(es) and how they address the problems.
28+
3. A "Fixes #<issue_number>" note. Ask the user if you don't know the issue number.

0 commit comments

Comments
 (0)