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

S’APPLIQUE À : Azure Database pour PostgreSQL – Serveur unique

S’APPLIQUE À : Azure Database pour PostgreSQL – Serveur unique Azure Database pour PostgreSQL – Serveur flexible

Démarrez avec GitHub Actions en utilisant un workflow pour déployer des mises à jour de base de données sur Azure Database pour PostgreSQL.

Prérequis

Éléments requis :

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

Créez un principal de service à l’aide de la commande az ad sp create-for-rbac dans Azure CLI. Exécutez cette commande en utilisant Azure Cloud Shell dans le portail Azure ou en sélectionnant le bouton Essayer.

az ad sp create-for-rbac --name "myML" --role contributor \
                            --scopes /subscriptions/<subscription-id>/resourceGroups/<group-name> \
                            --sdk-auth

Dans l’exemple ci-dessus, remplacez les espaces réservés par votre ID d’abonnement, le nom de votre groupe de ressources et le nom de votre application. La sortie correspond à un objet JSON avec les informations d’identification de l’attribution de rôle qui fournit l’accès à votre application App Service, similaire à ce qui suit. Copiez cet objet JSON pour une version ultérieure.

  {
    "clientId": "<GUID>",
    "clientSecret": "<GUID>",
    "subscriptionId": "<GUID>",
    "tenantId": "<GUID>",
    (...)
  }

Copier la chaîne de connexion PostgreSQL

Dans le portail Azure, accédez à votre serveur Azure Database pour PostgreSQL, puis ouvrez Paramètres>Chaînes de connexion. Copiez la chaîne de connexion ADO.NET. Remplacez les valeurs d’espace réservé spécifiées pour your_database et your_password. La chaîne de connexion ressemblera à ceci :

Important

  • Pour le serveur unique, utilisez user=adminusername@servername. Notez que @servername est obligatoire.
  • Pour le serveur flexible, utilisez user= adminusername sans @servername.
psql host={servername.postgres.database.azure.com} port=5432 dbname={your_database} user={adminusername} password={your_database_password} sslmode=require

Vous utiliserez cette chaîne de connexion comme secret GitHub.

Configurer les secrets GitHub

  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).

  4. Collez l’intégralité de la sortie JSON de la commande Azure CLI dans le champ de valeur du secret. Nommez le secret AZURE_CREDENTIALS.

  5. Sélectionnez Ajouter un secret.

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 et ajoutez les actions d’extraction et de connexion. Ces actions extraient votre code de site et vous authentifient auprès d’Azure à l’aide des secrets GitHub que vous avez créés précédemment.

    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@v1
        with:
            creds: ${{ secrets.AZURE_CREDENTIALS }}
    
  5. Utilisez l’action Déployer Azure PostgreSQL pour vous connecter à votre instance PostgreSQL. Remplacez POSTGRESQL_SERVER_NAME par le nom de votre serveur. Vous devez disposer d’un fichier de données PostgreSQL nommé data.sql au niveau racine de votre dépôt.

     - uses: azure/postgresql@v1
       with:
        connection-string: ${{ secrets.AZURE_POSTGRESQL_CONNECTION_STRING }}
        server-name: POSTGRESQL_SERVER_NAME
        sql-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 référentiel.

    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@v1
        with:
            client-id: ${{ secrets.AZURE_CREDENTIALS }}
    
    - uses: azure/postgresql@v1
      with:
        server-name: POSTGRESQL_SERVER_NAME
        connection-string: ${{ secrets.AZURE_POSTGRESQL_CONNECTION_STRING }}
        sql-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 des exécutions de GitHub Actions

Nettoyer les ressources

Quand votre dépôt et votre base de données Azure PostgreSQL ne sont plus nécessaires, nettoyez les ressources que vous avez déployées en supprimant le groupe de ressources et votre dépôt GitHub.

Étapes suivantes