Configurer un pipeline et envoyer (push) des mises à jour
Dans cet article, vous allez apprendre à utiliser Azure Developer CLI (azd
) pour envoyer (push) des modifications de modèle via un pipeline CI/CD tel que GitHub Actions ou Azure DevOps. Pour cet exemple, vous allez utiliser l’application web React avec Node.js API et MongoDB sur le modèle Azure , mais vous pouvez appliquer les principes que vous découvrez dans cet article à l’un des modèles AZURE Developer CLI.
Remarque
La azd pipeline config
commande est toujours en version bêta. En savoir plus sur la prise en charge des fonctionnalités alpha et bêta sur la page gestion des versions et stratégies de mise en production des fonctionnalités.
Prérequis
azd
les modèles peuvent inclure ou non un fichier de configuration de pipeline GitHub Actions et/ou Azure DevOps appelé azure-dev.yml
, qui est requis pour configurer CI/CD. Ce fichier de configuration provisionne vos ressources Azure et déploie votre code dans la branche principale. Vous trouverez azure-dev.yml
:
- Pour GitHub Actions : dans le
.github/workflow
répertoire. - Pour Azure DevOps : dans le
.azdo/pipelines
répertoire.
Vous pouvez utiliser le fichier de configuration tel qu’il est ou le modifier en fonction de vos besoins.
Remarque
Vérifiez que votre modèle a une définition de pipeline (azure-dev.yaml) avant d’appeler azd pipeline config
. azd
ne crée pas automatiquement ce fichier.
Consultez Créer une définition de pipeline pour azd ci-dessous.
Pour configurer un pipeline CI/CD, vous allez utiliser la azd pipeline config
commande, qui gère les tâches suivantes :
- Crée et configure un principal de service pour l’application sur l’abonnement Azure. Votre utilisateur doit avoir un
Owner
rôle ouContributor + User Access Administrator
des rôles dans l’abonnement Azure, car pour permettre à azd de créer et d’affecter des rôles au principal du service. - Vous guidez tout au long d’un flux de travail pour créer et configurer un dépôt GitHub ou Azure DevOps et valider votre code de projet. Vous pouvez également choisir d’utiliser un référentiel existant.
- Crée une connexion sécurisée entre Azure et votre référentiel.
- Exécute l’action GitHub lorsque vous case activée dans le fichier de flux de travail.
Pour un contrôle plus précis sur ce processus ou si vous n’avez pas les rôles requis, vous pouvez configurer manuellement un pipeline.
Sélectionnez votre fournisseur de pipeline préféré pour continuer :
Autoriser GitHub à déployer sur Azure
Pour configurer le flux de travail, vous devez autoriser un principal de service à déployer sur Azure en votre nom à partir d’une action GitHub. azd
crée le principal de service et les informations d’identification fédérées pour celle-ci.
Exécutez la commande suivante pour créer le principal de service Azure et configurer le pipeline :
azd pipeline config
Cette commande crée éventuellement un dépôt GitHub et envoie (push) du code au nouveau dépôt.
Remarque
Par défaut,
azd pipeline config
utilise OpenID Connecter (OIDC), appelées informations d’identification fédérées. Si vous préférez ne pas utiliser OIDC, exécutezazd pipeline config --auth-type client-credentials
.Les informations d’identification OIDC/fédérées ne sont pas prises en charge pour Terraform.
Fournissez les informations GitHub demandées.
Lorsque vous y êtes invité à valider et envoyer (push) vos modifications locales pour démarrer une nouvelle exécution gitHub Actions, spécifiez
y
.Dans la fenêtre de terminal, affichez les résultats de la
azd pipeline config
commande. Laazd pipeline config
commande génère le nom du référentiel GitHub pour votre projet.À l’aide de votre navigateur, ouvrez le dépôt GitHub de votre projet.
Sélectionnez Actions pour afficher le flux de travail en cours d’exécution.
Apporter et envoyer (push) une modification de code
Dans le répertoire du
/src/web/src/layout
projet, ouvrezheader.tsx
.Recherchez la ligne
<Text variant="xLarge">ToDo</Text>
.Remplacez le littéral
ToDo
parmyTodo
.Enregistrez le fichier.
Validez votre modification. La validation de la modification démarre le pipeline d’action GitHub pour déployer la mise à jour.
À l’aide de votre navigateur, ouvrez le dépôt GitHub de votre projet pour voir les deux :
- Votre validation
- Validation de GitHub Actions en cours de configuration.
Sélectionnez Actions pour afficher la mise à jour de test reflétée dans le flux de travail.
Visitez l’URL du front-end web pour inspecter la mise à jour.
azd
en tant qu’action GitHub
Ajouter azd
en tant qu’action GitHub. Cette action va installer azd
. Pour l’utiliser, vous pouvez ajouter ce qui suit :.github\workflows\azure-dev.yml
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Install azd
uses: Azure/setup-azd@v0.1.0
Nettoyer les ressources
Quand vous n’avez plus besoin des ressources Azure créées dans cet article, exécutez la commande suivante :
azd down
Fonctionnalités avancées
Vous pouvez étendre la azd pipeline config
commande pour des scénarios de modèle ou des exigences spécifiques, comme décrit dans les sections suivantes.
Secrets ou variables supplémentaires
Par défaut, azd
définit des variables et des secrets pour le pipeline. Par exemple, la azd pipeline config
commande crée les subscription id
variables de environment name
pipeline et les variables de region
pipeline chaque fois qu’elles s’exécutent. La définition du pipeline fait ensuite référence à ces variables :
env:
AZURE_CLIENT_ID: ${{ vars.AZURE_CLIENT_ID }}
AZURE_TENANT_ID: ${{ vars.AZURE_TENANT_ID }}
AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }}
AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }}
AZURE_LOCATION: ${{ vars.AZURE_LOCATION }}
Lorsque le pipeline s’exécute, azd
obtient les valeurs de l’environnement, qui est mappée aux variables et aux secrets. Selon le modèle, il peut y avoir des paramètres que vous pouvez contrôler à l’aide de variables d’environnement. Par exemple, une variable d’environnement nommée KEY_VAULT_NAME
peut être définie pour définir le nom d’une ressource Key Vault dans l’infrastructure de modèle. Dans ce cas, la liste des variables et des secrets peut être définie par le modèle, à l’aide du azure.yaml
. Par exemple, considérez la configuration suivante azure.yaml
:
pipeline:
variables:
- KEY_VAULT_NAME
- STORAGE_NAME
secrets:
- CONNECTION_STRING
Avec cette configuration, azd
case activée si l’une des variables ou secrets a une valeur non vide dans l’environnement. azd
crée ensuite une variable ou un secret pour le pipeline à l’aide du nom de la clé dans la configuration comme nom de la variable ou du secret, et la valeur non chaîne de l’environnement pour la valeur.
La définition du azure-dev.yaml
pipeline peut ensuite référencer les variables ou secrets :
- name: Provision Infrastructure
run: azd provision --no-prompt
env:
KEY_VAULT_NAME: ${{ variables.KEY_VAULT_NAME }}
STORAGE_NAME: ${{ variables.STORAGE_NAME }}
CONNECTION_STRING: ${{ secrets.CONNECTION_STRING }}
Remarque
Vous devez exécuter azd pipeline config
après la mise à jour de la liste des secrets ou des variables dans azure.yaml
azd pour réinitialiser les valeurs du pipeline.
Paramètres d’infrastructure
Prenons l’exemple bicep suivant :
@secure()
param BlobStorageConnection string
Le paramètre n’a pas de jeu BlobStorageConnection
de valeurs par défaut. Il invite donc azd
l’utilisateur à entrer une valeur. Toutefois, il n’existe aucune invite interactive pendant CI/CD. azd
doit demander la valeur du paramètre lors de l’exécution azd pipeline config
, enregistrer la valeur dans le pipeline, puis récupérer à nouveau la valeur lors de l’exécution du pipeline.
azd
utilise un secret de pipeline appelé AZD_INITIAL_ENVIRONMENT_CONFIG
pour enregistrer et définir automatiquement la valeur de tous les paramètres requis dans le pipeline. Vous devez uniquement référencer ce secret dans votre pipeline :
- name: Provision Infrastructure
run: azd provision --no-prompt
env:
AZD_INITIAL_ENVIRONMENT_CONFIG: ${{ secrets.AZD_INITIAL_ENVIRONMENT_CONFIG }}
Lorsque le pipeline s’exécute, azd
prend les valeurs des paramètres du secret, en supprimant la nécessité d’une invite interactive.
Remarque
Vous devez réexécuter azd pipeline config
si vous ajoutez un nouveau paramètre.
Créer une définition de pipeline
Si votre azd
modèle n’a pas encore de fichier de définition de pipeline CI/CD, vous pouvez en créer un vous-même. Une définition de pipeline CI/CD comporte généralement 4 sections principales :
- déclencheur
- autorisations
- système d’exploitation ou pool
- étapes à exécuter
Les exemples suivants montrent comment créer un fichier de définition et des configurations associées pour GitHub Actions et Azure Pipelines.
L’exécution azd
dans GitHub Actions nécessite les configurations suivantes :
- Accorder
id-token: write
etcontents: read
accéder aux étendues. - Installez l’action azd, sauf si vous utilisez une image Docker où
azd
elle est déjà installée.
Vous pouvez utiliser le modèle suivant comme point de départ pour votre propre définition de pipeline :
on:
workflow_dispatch:
push:
# Run when commits are pushed to mainline branch (main or master)
# Set this to the mainline branch you are using
branches:
- main
- master
# Set this permission if you are using a Federated Credential.
permissions:
id-token: write
contents: read
jobs:
build:
runs-on: ubuntu-latest
# azd build-in variables.
# This variables are always set by `azd pipeline config`
# You can set them as global env (apply to all steps) or you can add them to individual steps' environment
env:
AZURE_CLIENT_ID: ${{ vars.AZURE_CLIENT_ID }}
AZURE_TENANT_ID: ${{ vars.AZURE_TENANT_ID }}
AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }}
AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }}
AZURE_LOCATION: ${{ vars.AZURE_LOCATION }}
## Define the additional variables or secrets that are required globally (provision and deploy)
# ADDITIONAL_VARIABLE_PLACEHOLDER: ${{ variables.ADDITIONAL_VARIABLE_PLACEHOLDER }}
# ADDITIONAL_SECRET_PLACEHOLDER: ${{ secrets.ADDITIONAL_SECRET_PLACEHOLDER }}
steps:
- name: Checkout
uses: actions/checkout@v4
# using the install-azd action
- name: Install azd
uses: Azure/setup-azd@v1.0.0
# # If you want to use azd-daily build, or install it from a PR, you can remove previous step and
# # use the next one:
# - name: Install azd - daily or from PR
# # Update this scrip based on the OS - pool of your pipeline. This example is for a linux pipeline installing daily build
# run: curl -fsSL https://aka.ms/install-azd.sh | bash -s -- --version daily
# shell: pwsh
# azd set up Federated Credential by default. You can remove this step if you are using Client Credentials
- name: Log in with Azure (Federated Credentials)
if: ${{ env.AZURE_CLIENT_ID != '' }}
run: |
azd auth login `
--client-id "$Env:AZURE_CLIENT_ID" `
--federated-credential-provider "github" `
--tenant-id "$Env:AZURE_TENANT_ID"
shell: pwsh
## If you set up your pipeline with Client Credentials, remove previous step and uncomment this one
# - name: Log in with Azure (Client Credentials)
# if: ${{ env.AZURE_CREDENTIALS != '' }}
# run: |
# $info = $Env:AZURE_CREDENTIALS | ConvertFrom-Json -AsHashtable;
# Write-Host "::add-mask::$($info.clientSecret)"
# azd auth login `
# --client-id "$($info.clientId)" `
# --client-secret "$($info.clientSecret)" `
# --tenant-id "$($info.tenantId)"
# shell: pwsh
# env:
# AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }}
- name: Provision Infrastructure
run: azd provision --no-prompt
env:
# # uncomment this if you are using infrastructure parameters
# AZD_INITIAL_ENVIRONMENT_CONFIG: ${{ secrets.AZD_INITIAL_ENVIRONMENT_CONFIG }}
## Define the additional variables or secrets that are required only for provision
# ADDITIONAL_VARIABLE_PLACEHOLDER: ${{ variables.ADDITIONAL_VARIABLE_PLACEHOLDER }}
# ADDITIONAL_SECRET_PLACEHOLDER: ${{ secrets.ADDITIONAL_SECRET_PLACEHOLDER }}
- name: Deploy Application
run: azd deploy --no-prompt
env:
## Define the additional variables or secrets that are required only for deploy
# ADDITIONAL_VARIABLE_PLACEHOLDER: ${{ variables.ADDITIONAL_VARIABLE_PLACEHOLDER }}
# ADDITIONAL_SECRET_PLACEHOLDER: ${{ secrets.ADDITIONAL_SECRET_PLACEHOLDER }}
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour