Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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
mainet 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.
- Dans le portail Azure, inscrivez une nouvelle application sous Microsoft Entra ID>inscriptions d'applications.
- Enregistrez l’ID d’application (client) et l’ID locataire (tenant).
- 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.
- 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) versmain. -
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âchesrayfin upd’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 querayfinsoit dans le PATH. -
Login to Fabric with service principal: authentifie à l’aide des variables d’environnement*. -
Deploy to Fabric: exécuterayfin upsur le locataire et l’espace de travail configurés.--yesaccepte des invites non destructrices ;--forceest 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.groupinclutgithub.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 uprefuse les opérations sur le schéma susceptibles d’entraîner une perte de données, à moins que--forcene 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.