Déployer une application Fabric avec GitHub Actions

Automatisez les déploiements d’une application Fabric à partir d’un référentiel GitHub vers un espace de travail Fabric à l’aide d’un flux de travail GitHub Actions. Le flux de travail se connecte à Fabric avec un principal de service, installe l’interface CLI Rayfin et exécute rayfin up pour appliquer votre code, schéma de base de données et contenu statique à l’espace de travail cible. Cet article vous montre comment :

  • Préparez un principal de service et un espace de travail Fabric pour les déploiements automatisés.
  • Configurez les secrets du référentiel GitHub dont le flux de travail a besoin.
  • Ajoutez le fichier de flux de travail de déploiement à votre référentiel.
  • Déclenchez les déploiements automatiquement sur main et manuellement, avec une prise en charge facultative des modifications destructives.
  • Réutilisez le même flux de travail pour les branches de fonctionnalités et les déploiements spécifiques à l’environnement.

Prerequisites

  • Projet d’application Fabric dans un référentiel GitHub. Si vous n'en avez pas encore, consultez Createz votre premier projet Fabric Apps et envoyez votre code d'application au référentiel.
  • Espace de travail Fabric sur lequel le principal de service peut être déployé. Pour la séparation de l’environnement, consultez Gérer les environnements dev et prod.
  • Un principal de service Microsoft Entra ID (enregistrement d’application) avec un secret client.
  • Autorisation d’ajouter secrets au référentiel GitHub.

Étape 1 : Créer un principal de service pour les déploiements

Le flux de travail se connecte de manière non interactive. Il utilise donc un principal de service au lieu d’un compte d’utilisateur interactif.

  1. Dans le portail Azure, inscrivez une nouvelle application sous Microsoft Entra ID>inscriptions d'applications.
  2. Enregistrez l’ID d’application (client) et l’ID locataire (tenant).
  3. Sous Certificats et secrets, créez un secret client et copiez la valeur. Stockez-le en toute sécurité : vous ne pouvez pas le visualiser ultérieurement.
  4. Accordez au principal de service Contributor ou une autorisation supérieure sur l’espace de travail Fabric cible afin qu’il puisse créer et mettre à jour l’élément d’application Fabric.

Important

Les déploiements de principaux de service nécessitent des paramètres de locataire Fabric qui autorisent les principaux de service à utiliser les API Fabric. Vérifiez auprès de votre administrateur Fabric qu’il est activé.

Étape 2 : Ajouter des secrets de référentiel

Dans votre référentiel GitHub, accédez à Settings>Secrets et variables>Actions et ajoutez les secrets de référentiel suivants :

Nom du secret Value
CLIENT_ID ID d’application (client) du principal de service.
TENANT_ID ID d’annuaire (locataire).
CLIENT_SECRET Valeur du secret client.
FABRIC_WORKSPACE_NAME Nom de l’espace de travail Fabric cible (par exemple, my-app-prod).

Étape 3 : Ajouter le fichier de flux de travail

Dans votre référentiel, créez le fichier .github/workflows/deploy-to-fabric.yml avec le contenu suivant :

name: Deploy to Fabric

on:
  push:
    branches: [main]
  workflow_dispatch:
    inputs:
      force:
        description: 'Allow destructive schema changes that may result in data loss'
        required: false
        default: false
        type: boolean

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

permissions:
  contents: read

jobs:
  deploy:
    name: Deploy to Fabric
    runs-on: ubuntu-latest
    env:
      CLIENT_ID: ${{ secrets.CLIENT_ID }}
      TENANT_ID: ${{ secrets.TENANT_ID }}
      CLIENT_SECRET: ${{ secrets.CLIENT_SECRET }}
      FABRIC_WORKSPACE_NAME: ${{ secrets.FABRIC_WORKSPACE_NAME }}

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'

      - name: Install Rayfin CLI
        run: npm install -g @microsoft/rayfin-cli

      - name: Login to Rayfin with service principal
        run: |
          rayfin login \
            --service-principal \
            -t $TENANT_ID
            -u $CLIENT_ID
            -p CLIENT_SECRET

      - name: Deploy to Fabric
        run: |
          EXTRA_ARGS=""

          if [[ "${{ inputs.force }}" == "true" ]]; then
            EXTRA_ARGS="$EXTRA_ARGS --force"
          fi

          rayfin up \
            --workspace "$FABRIC_WORKSPACE_NAME" \
            --yes \
            $EXTRA_ARGS

Ce que fait chaque section

  • on.push: exécute automatiquement le flux de travail sur chaque envoi (push) vers main.
  • on.workflow_dispatch : ajoute un bouton Exécuter le flux de travail dans l’interface utilisateur GitHub Actions avec une case à cocher force. L’activation de l’option force transmet --force à rayfin up, ce qui permet d’effectuer des modifications destructrices du schéma (telles que la suppression de colonnes ou de tables). Laissez-le désactivé pour les déploiements sécurisés et non destructeurs.
  • concurrency: Garantit qu’un seul déploiement par branche s’exécute à la fois. Si un nouveau push arrive alors qu’un déploiement précédent est toujours en cours d’exécution, l’ancienne exécution est annulée en faveur de la validation plus récente. Ce paramètre empêche deux tâches rayfin up d’entrer en concurrence sur le même espace de travail.
  • env: transmet les informations d’identification du principal de service et le nom de l’espace de travail cible à la tâche.
  • Install Rayfin CLI : Installe le CLI globalement afin que rayfin soit dans le PATH.
  • Login to Fabric with service principal : authentifie à l’aide des variables d’environnement *.
  • Deploy to Fabric : exécute rayfin up sur le locataire et l’espace de travail configurés. --yes accepte des invites non destructrices ; --force est ajouté uniquement lorsque l’exécution manuelle l’a demandée.

Étape 4 : Déclencher un déploiement

Vous pouvez déclencher le flux de travail de deux façons :

  • Automatiquement : pousser ou fusionner un commit vers la branche main.
  • Manually : Dans GitHub, accédez à Actions>Deploy to Fabric>Run workflow. Sélectionnez la branche à déployer et cochez éventuellement Autoriser les modifications de schéma destructrices susceptibles d’entraîner une perte de données avant de lancer l’exécution.

Une fois le flux de travail terminé, l’étape Deploy to Fabric dans le journal d’exécution imprime l’URL de l’application Fabric et l’ID de déploiement.

Considérations et limites

  • La concurrence est par branche. Le concurrency.group inclut github.ref, donc les déploiements sur différentes branches ne s’annulent pas entre eux. Ce comportement est intentionnel lorsque vous associez des branches à différents espaces de travail.
  • Les modifications destructrices sont bloquées par défaut. rayfin up refuse les opérations sur le schéma susceptibles d’entraîner une perte de données, à moins que --force ne soit spécifié. N’activez force que lors d’une exécution manuelle, après avoir examiné les opérations planifiées.
  • Les espaces de travail doivent exister. Le flux de travail ne crée pas Fabric espaces de travail. Créez-les dans le portail Fabric et accordez d’abord l’accès au principal de service.