Partager via


Démarrage rapide : Utiliser GitHub Actions pour se connecter à Azure Database pour PostgreSQL

Prise en main de GitHub Actions à l’aide d’un flux de travail pour déployer des mises à jour de base de données sur Azure Database pour PostgreSQL.

Prérequis

Ce dont vous avez besoin :

Vue d’ensemble du fichier de workflow

Un workflow GitHub Actions est défini par un fichier YAML (.yml) dans le chemin /.github/workflows/ de votre dépôt. Cette définition contient les étapes et les paramètres qui composent le workflow.

Le fichier comporte deux sections :

Section Tâches
Authentification 1. Générer les informations d’identification du déploiement.
Déployer 1. Déployez la base de données.

Générer les informations d’identification du déploiement

Pour utiliser l’action de connexion Azure avec OIDC, vous devez configurer des informations d’identification d’identité fédérée sur une application Microsoft Entra ou une identité managée affectée par l’utilisateur.

Option 1 : application Microsoft Entra

Option 2 : identité managée affectée par l’utilisateur

Copier la chaîne de connexion de la base de données Azure pour PostgreSQL

Dans le portail Azure, accédez à votre instance de serveur flexible Azure Database pour PostgreSQL et, dans le menu des ressources, sous Paramètres, sélectionnez Se connecter. Dans cette page, utilisez la zone de liste déroulante Nom de la base de données pour sélectionner le nom de la base de données à laquelle vous souhaitez vous connecter. Développez la section Se connecter à partir de votre application et copiez ADO.NET chaîne de connexion, puis remplacez la valeur d’espace réservé {your_password} par votre mot de passe réel. La chaîne de connexion ressemble à ceci.

Server={servername.postgres.database.azure.com};Database={your_database};Port=5432;User Id={adminusername};Password={your_password};Ssl Mode=Require;

Vous utilisez la chaîne de connexion comme un secret GitHub.

Configurer les secrets GitHub

Vous devez fournir l’ID client, l’ID d’annuaire (tenant), et l’ID d’abonnement de votre application à l’action de connexion. Vous pouvez fournir ces valeurs directement dans le workflow ou les stocker dans des secrets GitHub et les référencer dans votre workflow. L’enregistrement des valeurs en tant que secrets GitHub est l’option la plus sécurisée.

  1. Dans GitHub, accédez à votre dépôt.

  2. Sélectionnez Sécurité > Secrets et variables > Actions.

    Capture d’écran de l’ajout d’un secret

  3. Sélectionnez New repository secret (Nouveau secret de dépôt).

    Note

    Pour améliorer la sécurité des flux de travail dans des référentiels publics, utilisez des secrets d’environnement au lieu de secrets de référentiel. Si l’environnement nécessite une approbation, un travail ne peut pas accéder aux secrets d’environnement tant que l’un des réviseurs requis ne l’approuve pas.

  4. Créez des secrets pour AZURE_CLIENT_ID, AZURE_TENANT_ID et AZURE_SUBSCRIPTION_ID. Copiez ces valeurs à partir de votre application Microsoft Entra ou de l’identité managée affectée par l’utilisateur pour vos secrets GitHub :

    Secret GitHub Application Microsoft Entra ou identité managée attribuée par l’utilisateur
    AZURE_CLIENT_ID ID de client
    AZURE_SUBSCRIPTION_ID Identifiant d’abonnement
    AZURE_TENANT_ID ID de l’annuaire (locataire)

    Note

    Pour des raisons de sécurité, nous vous recommandons d’utiliser des secrets GitHub plutôt que de passer des valeurs directement au flux de travail.

Ajouter votre workflow

  1. Accédez à Actions pour votre référentiel GitHub.

  2. Sélectionnez Configurer vous-même un workflow.

  3. Supprimez tous les éléments après la section on: de votre fichier de workflow. Par exemple, votre workflow restant peut ressembler à ce qui suit.

    name: CI
    
    on:
    push:
        branches: [ main ]
    pull_request:
        branches: [ main ]
    
  4. Renommez votre workflow PostgreSQL for GitHub Actions, tout en ajoutant des actions d’extraction et de connexion. Ces actions extraient votre code de site et vous authentifient auprès d’Azure à l’aide du ou des secrets GitHub précédemment créés.

    name: PostgreSQL for GitHub Actions
    
    on:
    push:
        branches: [ main ]
    pull_request:
        branches: [ main ]
    
    jobs:
    build:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v1
        - uses: azure/login@v2
        with:
            client-id: ${{ secrets.AZURE_CLIENT_ID }}
            tenant-id: ${{ secrets.AZURE_TENANT_ID }}
            subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
    
  5. Utilisez l’action Azure PostgreSQL Deploy pour vous connecter à votre instance de serveur flexible Azure Database pour PostgreSQL. Remplacez POSTGRESQL_SERVER_NAME par le nom de votre serveur. Vous devez disposer d’un fichier de données Azure Database pour PostgreSQL nommé data.sql au niveau racine de votre référentiel.

     - uses: azure/postgresql@v1
       with:
        connection-string: ${{ secrets.AZURE_POSTGRESQL_CONNECTION_STRING }}
        server-name: POSTGRESQL_SERVER_NAME
        plsql-file: './data.sql'
    
  6. Terminez votre workflow en ajoutant une action permettant de vous déconnecter d’Azure. Voici le workflow terminé. Le fichier apparaît dans le dossier .github/workflows de votre dépôt.

    name: PostgreSQL for GitHub Actions
    
    on:
    push:
        branches: [ main ]
    pull_request:
        branches: [ main ]
    
    
    jobs:
    build:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v1
        - uses: azure/login@v2
        with:
            client-id: ${{ secrets.AZURE_CLIENT_ID }}
            tenant-id: ${{ secrets.AZURE_TENANT_ID }}
            subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
    
    - uses: azure/postgresql@v1
      with:
        server-name: POSTGRESQL_SERVER_NAME
        connection-string: ${{ secrets.AZURE_POSTGRESQL_CONNECTION_STRING }}
        plsql-file: './data.sql'
    
        # Azure logout
    - name: logout
      run: |
         az logout
    

Vérifier votre déploiement

  1. Accédez à Actions pour votre référentiel GitHub.

  2. Ouvrez le premier résultat pour afficher les journaux détaillés de l’exécution de votre workflow.

    Journal de l’exécution de GitHub Actions.

Nettoyer les ressources

Lorsque votre base de données et référentiel Azure Database pour PostgreSQL ne sont plus nécessaires, nettoyez les ressources que vous avez déployées en supprimant le groupe de ressources et votre référentiel GitHub.