deploy

Par microsoft · azure-skills

npx skills add https://github.com/microsoft/azure-skills --skill deploy

Déployer — Exécution IaC et Vérification de l'état

Référence rapide

Propriété Valeur
Meilleur pour Exécuter l'IaC validée contre Azure, vérifier l'état des ressources déployées
Entrées prepare-plan.json + scaffold-manifest.json depuis .copilot-azure/sessions/{id}/
Sorties deploy-result.json écrit dans le répertoire de session
Parent azure-app-onboard

Quand utiliser cette compétence

Invoquée par l'orchestrateur azure-app-onboard à la Phase 4 quand scaffold-manifest.json existe avec files[] et validationResult. Non directement routable par l'utilisateur.

Retour à l'orchestrateur : Une fois terminé, retourner le contrôle à azure-app-onboard pour la passation (Étape 10). Ne PAS démarrer de nouvelles phases.

Quand NE PAS utiliser

Scénario Utiliser à la place
Planifier l'architecture, mapper les services, estimer les coûts prepare
Générer des fichiers IaC à partir d'un plan azure-app-onboard Étape 7 (scaffold)
Exécuter azd up ou déployer des templates existants azure-deploy
Déboguer une app en cours d'exécution après le déploiement azure-diagnostics
Optimiser les dépenses Azure existantes azure-cost

Flux de travail

La délégation à un sous-agent est OBLIGATOIRE pour l'Étape 0. Lisez subagent-preflight.md, puis envoyez comme task avec le texte du template COMPLET et NON MODIFIÉ entre les délimiteurs <<<TEMPLATE_START>>> / <<<TEMPLATE_END>>>. Ne RÉSUMEZ pas et ne RÉÉCRIVEZ pas le template — le sous-agent a besoin de chaque instruction « Read [file] » pour produire un deploy-checklist.md correct. Ajoutez les données d'artefact de session APRÈS le bloc de template. Si votre prochaine action après la lecture du template est autre chose que task, vous l'exécutez en ligne plutôt que de déléguer.

Boucle de guérison : demandez à l'utilisateur après 3 tentatives, puis tous les 5 (compteur = healingAttempts[].length).

Verrou régional : Avant la nouvelle tentative az deployment, comparez --location par rapport à prepare-plan.json.deploymentVariables.location. Si changé → approbation requise. Mettez à jour le plan après approbation.

Après compaction ou tout az deployment/az webapp deploy/az acr build/échec de vérification de l'état : relisez deploy-checklist.md. S'il manque → remplissez à partir de deploy-checklist-template.md. En cas de perte significative de contexte : relisez aussi ce SKILL.md.

# Étape Action Artefact Référence
0 Envoyer le sous-agent preflight Vous DEVEZ envoyer subagent-preflight.md comme task. ⛔ agent_type: "task" — JAMAIS "general-purpose". Lisez le template, puis votre PROCHAINE action DOIT être task. Si après la lecture du template votre prochaine action est powershell, view, ou autre chose que task, ARRÊTEZ — vous l'exécutez en ligne au lieu de déléguer. Écrit deploy-checklist.md. Affichez-le immédiatement après le retour. deploy-checklist.md Vous DEVEZ lire subagent-preflight.md
1 Lire les artefacts upstream Charger prepare-plan.json + scaffold-manifest.json. Vérifier validationResult. Résoudre subscription + variables de déploiement.
3 Vérifications preflight Auth, aperçu what-if obligatoire, RBAC, RG par deploy-checklist.md § Preflight. Vous DEVEZ lire deploy-checklist.md (relire si compaction)
4 Porte d'approbation de déploiement Présenter le résumé de coût + ressources par deploy-checklist.md § Deploy approval gate format.
5b Écrire le squelette deploy-result.json ⛔ Lisez deploy-schemas.ts, écrivez le squelette (status: "in-progress"). Doit exister AVANT la première commande az. deploy-result.json Vous DEVEZ lire deploy-schemas.ts
6 Exécuter le déploiement AVANT az deployment sub create : Générer le lien du portail — $dn="{deploymentName}"; $r="/subscriptions/{subId}/providers/Microsoft.Resources/deployments/$dn"; $l="https://portal.azure.com/#view/Microsoft_Azure_Resources/DeploymentDetails.MenuView/~/overview/id/$($r.Replace('/','%2F'))"; Write-Output "LINK=$l". ⛔ Ouvrir automatiquement le lien dans le navigateur : Start-Process $l 2>$null. Imprimer l'URL brute dans le chat (cliquable avec Ctrl).<br>Auto-générer TOUS les paramètres @secure() (openssl rand -base64 32 \| tr -d '/+='), NE JAMAIS ask_user pour les mots de passe ; à la nouvelle tentative réutiliser depuis deploy-secrets.env ou Key Vault — JAMAIS régénérer (voir deploy-safety.md § Deploy Checklist). PUIS déployer l'IaC. Vous DEVEZ lire deploy-checklist.md § Execute deployment
6b Déployer le code applicatif ⛔ Déployer le code pour CHAQUE service dans prepare-plan.json.services[]. Suivre deploy-checklist.md § Code deploy. Vous DEVEZ lire deploy-checklist.md § Code deploy
7 Vérification de l'état + réactivation SCM HTTP GET par endpoint (max 3 itérations). ⛔ Apps multi-services : Inspectez aussi le corps de la réponse pour les motifs d'erreur (connection refused, MODULE_NOT_FOUND, localhost, SET-IN-DEPLOY-PHASE) — HTTP 200 seul ne signifie pas fonctionnel quand l'app dépend d'un autre service ou de secrets KV. Puis ⛔ pour CHAQUE app App Service/Functions exécutez LES DEUX commandes — pas d'exceptions : az rest --method put --url "/subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.Web/sites/{app}/basicPublishingCredentialsPolicies/scm?api-version=2023-12-01" --headers "Content-Type=application/json" --body '{"properties":{"allow":false}}' puis vérifiez : az rest --method get --url "/subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.Web/sites/{app}/basicPublishingCredentialsPolicies/scm?api-version=2023-12-01" --query properties.allow -o tsv (doit retourner false). deploy-result.json complet Vous DEVEZ lire deploy-checklist.md § Health check
8 Finaliser les artefacts ⛔ Lisez deploy-schemas.ts. ⛔ Relisez deploy-checklist.md § Artifact verification — suivez TOUS les 5 contrôles. ⛔ Aucun message « live »/passation jusqu'à ce que vous écrasier le squelette deploy-result.json — basculez status de "in-progress" (→ succeeded/failed) et remplissez healthStatus, endpoints, completedUtc, deploymentNames, healingAttempts. Écrivez deployment-summary.md (tableau de statut + santé + lien(s) du portail + commandes de nettoyage — même contenu que votre message de passation). Mettez à jour context.json — ajoutez "deploy" à completedPhases, currentPhase: null, lastModifiedUtc. Relisez pour confirmer status != "in-progress" et "deploy"completedPhases. ⛔ Puis ARRÊTEZ — retournez à l'orchestrateur. Pas de commandes CLI supplémentaires. deploy-result.json final + deployment-summary.md + mise à jour context.json Vous DEVEZ lire deploy-schemas.ts + ⛔ Relire deploy-checklist.md § Artifact verification
9 Gestion des erreurs + guérison Uniquement si les Étapes 6/6b/7 ont retourné un code de sortie non zéro ou la vérification de l'état a échoué. Ignorer complètement sur les déploiements propres. Classifier les erreurs, boucle de guérison, PLAN_LEVEL_CHANGE ré-approbation par deploy-checklist.md § During healing. ⛔ Même en cas d'échec irrécupérable : écrivez deploy-result.json avec status: "failed" et errorDetails avant de retourner à l'orchestrateur — l'artefact doit toujours exister. Vous DEVEZ lire error-classification.md

Skills similaires