Fournisseur de mise à jour Pulumi
Aperçu
Exécutez upgrade-provider, corrigez les défaillances connues, et relancez jusqu'au succès. Gardez les opérations git en lecture seule dans le dépôt ; l'outil est propriétaire de l'état des branches/commits/PR.
Boucle d'exécution
- Créez le répertoire de sortie :
mkdir -p .pulumi
- Exécutez depuis la racine du dépôt :
upgrade-provider $ORG/$REPO --repo-path . > .pulumi/upgrade-provider-stdout.txt 2> /dev/null
- Attendez la fin (peut prendre jusqu'à 10 minutes).
- Vérifiez les erreurs en parcourant les lignes de
.pulumi/upgrade-provider-stdout.txtcommençant parerror:. - En cas d'échec, corrigez en utilisant
references/upgrade-provider-errors.mdde cette compétence (du dossier de la compétence, pas du dépôt), puis relancez. Pour les défaillancesgo geten amont impliquant des directivesreplaceignorées ouunknown revision v0.0.0, relancez avec--target-versionaprès avoir appliqué les remplacements documentés dansprovider/go.mod; préservez l'intention majeure/non-majeure d'origine et n'ajoutez--majorque pour les vraies mises à jour de version majeure. - Si une correction requiert de créer/amender/supprimer/rebaser des patches, utilisez la compétence
upstream-patchespour le workflow des patches. - Si vous avez corrigé un conflit, signalez les modifications exactes (chemins de fichiers + changements concrets ou intention préservée).
- Si la mise à jour a modifié des patches, exécutez
./scripts/upstream.sh checkoutet vérifiez les commitsupstreamappliqués :- Listez les SHAs/titres des commits depuis
upstream. - Résumez l'intention de chaque commit en langage clair.
- Signalez les changements de comportement ou les risques.
- Listez les SHAs/titres des commits depuis
- En cas de succès, passez aux tâches post-exécution.
Quand arrêter et signaler un échec
Arrêtez l'itération et signalez l'échec si l'une de ces conditions est remplie :
- Commande non trouvée (code de sortie 127) : L'outil
upgrade-providern'est pas dans PATH. - Même erreur 3 fois : Vous avez tenté de corriger la même erreur 3 fois sans succès.
- Modèle d'erreur inconnu : L'erreur n'est pas couverte dans
references/upgrade-provider-errors.mdet vous ne pouvez pas déterminer une correction sûre. - Nécessite un jugement humain : La correction a besoin d'une entrée utilisateur, comme :
- Choisir entre plusieurs approches valides
- Changements cassants qui affectent l'API publique
- Stratégies de dépréciation
- Décisions architecturales sur l'organisation des modules
Lors de l'arrêt, signalez :
- Les erreurs rencontrées.
- Les corrections tentées (avec chemins de fichiers et changements).
- Pourquoi une intervention humaine est nécessaire.
- Tout progrès partiel.
Tâches post-exécution
L'outil crée une PR en cas de succès de la mise à jour.
- DOIT récupérer l'URL de la PR pour la branche actuelle en utilisant des commandes en lecture seule :
gh pr view --json url --jq .url || gh pr list --head "$(git branch --show-current)" --json url --jq '.[0].url'
- DOIT ajouter une section « Corrections appliquées pour débloquer la mise à jour » au corps existant de la PR si des corrections ont été appliquées (ne pas écraser) :
repo=$(gh repo view --json nameWithOwner --jq .nameWithOwner)
pr_number=$(gh pr view --json number --jq .number)
gh pr view --json body --jq .body > /tmp/pr_body.txt
cat <<'EOF' >> /tmp/pr_body.txt
---
### Corrections appliquées pour débloquer la mise à jour
- <listez les modifications concrètes de déblocage ici, avec chemins de fichiers et intention>
EOF
gh api -X PATCH "repos/$repo/pulls/$pr_number" --raw-field body="$(cat /tmp/pr_body.txt)"
Utilisez REST (gh api) au lieu de gh pr edit pour éviter les erreurs de cartes de projet GraphQL. Gardez le contenu du corps existant ; ajouter seulement.
Notes
git rebase --continue --no-editn'est pas supporté dans les anciennes versions de git. Utilisezgit rebase --continueet acceptez le message de commit existant.- Pour éviter l'invite de l'éditeur lors de
git rebase --continue, exécutez-le avecGIT_EDITOR=true(ouGIT_EDITOR=:).
Garde-fous
- Ne commitez, ne poussez, ne créez jamais de branches manuellement ; exécutez seulement des commandes git en lecture seule.
./scripts/upstream.sh checkout|rebase|check_insont autorisés car l'outil gère l'état git.- Ne stashiez pas les changements ; l'outil gère l'état git.
Références
- Utilisez
references/upgrade-provider-errors.mdde cette compétence (du dossier de la compétence, pas du dépôt) pour les corrections de conflit de patch, remplacement en amont ignoré, dépendance en amont vendorisée, fichier .NET dupliqué, et nouvelles corrections de mapping de module.