Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
S’applique à :Azure SQL Database
Familiarisez-vous avec GitHub Actions en utilisant un workflow pour déployer des mises à jour de base de données sur Azure SQL Database.
Prérequis
Ce dont vous avez besoin :
- Compte Azure avec un abonnement actif. Créez un compte gratuitement.
- Un dépôt GitHub avec un package dacpac (
Database.dacpac). Si vous n’avez pas de compte GitHub, inscrivez-vous gratuitement. - Une base de données Azure SQL. Démarrage rapide : créer une base de données unique pour la base de données Azure SQL
- Un fichier .dacpac à importer dans votre base de données.
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. Ce fichier comporte les étapes et les paramètres qui composent le flux de travail.
Le fichier comporte deux sections :
| Section | Tâches |
|---|---|
| Authentification | 1. Générer les informations d’identification du déploiement. |
| Déployer | 2. 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
- Créez une application Microsoft Entra avec un principal de service par Portail Azure, Azure CLI ou PowerShell.
- Copiez les valeurs pour ID client et ID d’abonnement et ID d’annuaire (locataire). Vous en aurez besoin dans votre workflow GitHub Actions.
- Attribuez un rôle approprié à votre principal de service par le Portail Azure, Azure CLI ou Azure PowerShell.
- Configurez des informations d’identification fédérées sur une application Microsoft Entra pour approuver les jetons émis par GitHub Actions pour votre référentiel GitHub.
Option 2 : identité managée affectée par l’utilisateur
- Créez une identité managée attribuée par l'utilisateur.
- Copiez les valeurs pour ID client et ID d’abonnement et ID d’annuaire (locataire). Vous en aurez besoin dans votre workflow GitHub Actions.
- Attribuez un rôle approprié à votre identité managée affectée par l’utilisateur.
- Configurez des informations d’identification fédérées sur une identité managée affectée par l’utilisateur pour approuver les jetons émis par GitHub Actions pour votre référentiel GitHub.
Copier la chaîne de connexion SQL
Dans le portail Azure, accédez à votre base de données Azure SQL Database, 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.
Vous définissez la chaîne de connexion comme un secret GitHub, AZURE_SQL_CONNECTION_STRING.
Configurer les secrets GitHub
Vous devez fournir l’ID de client, l’ID d’annuaire (locataire) 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.
Dans GitHub, accédez à votre dépôt.
Sélectionnez Sécurité > Secrets et variables > Actions.
Sélectionnez New repository secret (Nouveau secret de dépôt).
Remarque
Pour améliorer la sécurité des flux de travail dans des référentiels publics, utilisez des secrets d’environnement plutôt que des 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.
Créez des secrets pour
AZURE_CLIENT_ID,AZURE_TENANT_IDetAZURE_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 affectée par l’utilisateur AZURE_CLIENT_ID ID de client AZURE_SUBSCRIPTION_ID Identifiant d’abonnement AZURE_TENANT_ID ID de l’annuaire (locataire) Remarque
Pour des raisons de sécurité, nous vous recommandons d’utiliser des secrets GitHub plutôt que de transmettre des valeurs directement au flux de travail.
Ajouter le secret de la chaîne de connexion SQL
Dans GitHub, accédez à votre dépôt.
Sélectionnez Paramètres dans le volet de navigation.
Sélectionnez Sécurité > Secrets et variables > Actions.
Sélectionnez New repository secret (Nouveau secret de dépôt).
Collez votre chaîne de connexion SQL. Nommez le secret
AZURE_SQL_CONNECTION_STRING.Sélectionnez Ajouter un secret.
Ajouter votre workflow
Accédez à Actions pour votre référentiel GitHub.
Sélectionnez Configurer vous-même un workflow.
Supprimez tous les éléments après la section
on:de votre fichier de workflow. Par exemple, votre flux de travail restant peut ressembler à ceci.name: SQL for GitHub Actions on: push: branches: [ main ] pull_request: branches: [ main ]Renommez votre workflow
SQL for GitHub Actionset ajoutez les actions d’extraction et de connexion. Ces actions extraient le code de votre site et vous authentifient auprès d’Azure en utilisant le secret GitHubAZURE_CREDENTIALSque vous avez créé précédemment.name: SQL for GitHub Actions on: push: branches: [ main ] pull_request: branches: [ main ] jobs: build: runs-on: windows-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 }}
Utilisez l’action Déployer d’Azure SQL pour vous connecter à votre instance SQL. Vous devez disposer d’un package dacpac (
Database.dacpac) au niveau racine de votre dépôt. Utilisez le secret GitHubAZURE_SQL_CONNECTION_STRINGque vous avez créé précédemment.- uses: azure/sql-action@v2.3 with: connection-string: ${{ secrets.AZURE_SQL_CONNECTION_STRING }} path: './Database.dacpac' action: 'publish'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/workflowsde votre dépôt.name: SQL for GitHub Actions on: push: branches: [ main ] pull_request: branches: [ main ] jobs: build: runs-on: windows-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/sql-action@v2.3 with: connection-string: ${{ secrets.AZURE_SQL_CONNECTION_STRING }} path: './Database.dacpac' action: 'publish' # Azure logout - name: logout run: | az logout
Vérifier votre déploiement
Accédez à Actions pour votre référentiel GitHub.
Ouvrez le premier résultat pour afficher les journaux détaillés de l’exécution de votre workflow.
Nettoyer les ressources
Quand votre dépôt et votre base de données Azure SQL 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.