Importer des fichiers de configuration à partir de votre dépôt GitHub dans le magasin App Configuration

Si vous avez adopté Configuration en tant que code et que vous gérez vos configurations dans GitHub, vous pouvez utiliser GitHub Actions pour importer automatiquement des fichiers de configuration à partir de votre dépôt GitHub dans votre magasin App Configuration. Cela vous permet d’apporter des modifications à vos fichiers de configuration comme vous le feriez normalement, tout en obtenant les avantages offerts par le magasin App Configuration, comme :

  • Configuration centralisée en dehors de votre code.
  • Mise à jour de la configuration sans redéploiement de l’intégralité de votre application.
  • Intégration à des services comme Azure App Service et Azure Functions.

Un workflow GitHub Actions définit un processus automatisé dans un dépôt GitHub. Pour importer un fichier de configuration à partir de votre dépôt GitHub dans le magasin Azure App Configuration, utilisez l’action GitHub Azure CLI, qui fournit des fonctionnalités complètes pour l’importation de fichiers dans votre magasin App Configuration.

Authentification

Pour importer des configurations dans votre magasin Azure App Configuration, vous pouvez vous authentifier à l’aide de l’une des méthodes suivantes :

Utiliser Microsoft Entra ID

La méthode recommandée pour l’authentification consiste à utiliser Microsoft Entra ID, qui vous permet de vous connecter à vos ressources Azure de manière sécurisée. Vous pouvez automatiser le processus d’authentification à l’aide de l’action GitHub Azure Login.

Azure Login vous permet de vous authentifier à l’aide de principaux de service avec des secrets ou d’OpenID Connect avec des informations d’identification d’identité fédérée. Dans cet exemple, vous allez utiliser OpenID Connect pour vous connecter à votre magasin App Configuration.

Utiliser Azure Login avec OpenID Connect

Pour utiliser Azure Login avec OpenID Connect, vous devez :

  1. Configurer une application Microsoft Entra avec un principal de service.
  2. Attribuer à votre application Microsoft Entra le rôle Propriétaire des données App Configuration pour permettre à votre action GitHub de lire et d’écrire dans votre magasin App Configuration.
  3. Fournir l’ID de client, l’ID de locataire et l’ID d’abonnement de votre application Microsoft Entra à l’action de connexion. Ces valeurs peuvent être fournies directement dans le workflow, ou stockées en tant que secrets GitHub pour une sécurité accrue. Dans l’exemple ci-dessous, ces valeurs sont définies en tant que secrets. Pour plus d’informations sur l’utilisation des secrets dans GitHub, consultez Utilisation de secrets dans GitHub Actions.

Pour commencer à utiliser cette action GitHub, accédez à votre dépôt et sélectionnez l’onglet Actions. Sélectionnez Nouveau workflow, puis Configurer un workflow vous-même. Pour finir, recherchez « Azure Login » sur la Place de marché. Une fois que vous l’avez trouvée, cliquez sur l’action et copiez l’extrait de code fourni dans votre fichier de workflow.

Sélectionner l’onglet Action

Sélectionner Azure CLI Action

Exemple utilisant Microsoft Entra ID

# Set permissions for the workflow. Specify 'id-token: write' to allow OIDC token generation at the workflow level.
permissions: 
  id-token: write
  contents: read
 
jobs: 
  syncconfig: 
    runs-on: ubuntu-latest 
    steps: 
      - name: Azure login
        uses: azure/login@v2
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

Utiliser une chaîne de connexion

Vous pouvez également vous authentifier en transmettant la chaîne de connexion directement à la commande Azure CLI. Cette méthode implique de récupérer la chaîne de connexion à partir du portail Azure et de l’utiliser dans vos commandes ou scripts.

Pour bien démarrer, vous trouverez la chaîne de connexion sous Paramètres d’accès dans votre magasin App Configuration dans le portail Azure.

Ensuite, définissez cette chaîne de connexion en tant que variable secrète dans votre dépôt GitHub. Pour plus d’informations sur l’utilisation des secrets dans GitHub, consultez Utilisation de secrets dans GitHub Actions.

Exemple utilisant une chaîne de connexion

on: 
  push: 
    branches: 
      - 'main' 
    paths: 
      - 'appsettings.json'
 
jobs: 
  syncconfig: 
    runs-on: ubuntu-latest
    
    # pass the secret variable as an environment variable to access it in your CLI action.
    env:
      CONNECTION_STRING: ${{ secrets.<ConnectionString> }}

Importation de fichier de configuration

Vous utilisez l’action GitHub Azure CLI pour importer un fichier de configuration dans votre magasin App Configuration. Pour commencer à utiliser cette action GitHub, accédez à votre dépôt et sélectionnez l’onglet Actions. Sélectionnez Nouveau workflow, puis Configurer un workflow vous-même. Pour finir, recherchez « Azure CLI Action » sur la Place de marché. Une fois que vous l’avez trouvée, cliquez sur l’action et copiez l’extrait de code fourni dans votre fichier de workflow.

Sélectionner Azure CLI Action

Dans l’exemple suivant, vous utilisez l’action Azure CLI pour importer des fichiers de configuration dans un magasin Azure App Configuration lorsqu’une modification est envoyée vers appsettings.json. Lorsqu’un développeur envoie une modification vers appsettings.json, le script passé à l’action Azure CLI met à jour le magasin App Configuration avec les nouvelles valeurs.

La section on de ce workflow spécifie que l’action se déclenche durant un envoi (push) contenant appsettings.json vers la branche main. La section jobs répertorie les travaux exécutés une fois l’action déclenchée. L’action extrait les fichiers pertinents et met à jour le magasin App Configuration.

on: 
  push: 
    branches: 
      - 'main' 
    paths: 
      - 'appsettings.json'

# Set permissions for the workflow. Specify 'id-token: write' to allow OIDC token generation at the workflow level.
permissions: 
  id-token: write
  contents: read

jobs: 
  syncconfig: 
    runs-on: ubuntu-latest 
    steps: 
      - name: Azure login
        uses: azure/login@v2
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

      # checkout done so that files in the repo can be read by the sync 
      - uses: actions/checkout@v1 
      - uses: azure/cli@v2
        with: 
          azcliversion: latest
          inlineScript: |
            az appconfig kv import --endpoint <your-app-configuration-store-endpoint> --auth-mode login -s file --path appsettings.json --format json --yes

Pour plus d’informations sur les commandes d’importation de l’interface CLI Azure App Configuration, consultez la documentation de l’interface CLI Azure AppConfifguration.

Utiliser une étiquette dynamique lors d’une importation

L’utilisation d’une étiquette dynamique sur chaque importation est un bon moyen de maintenir un contrôle de version clair et précis de vos configurations. Cela permet à chaque importation dans votre magasin App Configuration d’être identifiée de manière unique, ce qui facilite le mappage des modifications de code aux mises à jour de configuration.

Exemple utilisant une étiquette dynamique lors de l’importation

Dans l’exemple suivant, toutes les valeurs de clés importées auront une étiquette unique basée sur le hachage de commit.

 jobs: 
  syncconfig: 
    runs-on: ubuntu-latest 
    steps:      
      # Creates a label based on the branch name and the first 8 characters          
      # of the commit hash 
      - id: determine_label 
        run: echo ::set-output name=LABEL::"${GITHUB_REF#refs/*/}/${GITHUB_SHA:0:8}" 
      # checkout done so that files in the repo can be read by the sync 
      - uses: actions/checkout@v1 
      - uses: azure/cli@v2
        with: 
          azcliversion: latest
          inlineScript: |
            az appconfig kv import --endpoint <your-app-configuration-store-endpoint> --auth-mode login -s file --path appsettings.json --format json --label ${{ steps.determine_label.outputs.LABEL }} --yes

Étapes suivantes

Pour découvrir comment utiliser les commandes d’importation CLI, consultez notre guide complet sur les commandes d’importation Azure CLI.

Pour en savoir plus sur les différents profils de contenu de fichier, consultez Prise en charge d’Azure App Configuration pour les fichiers de configuration.