Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Automatisieren Sie Bereitstellungen einer Fabric-App aus einem GitHub Repository in einem Fabric Arbeitsbereich mithilfe eines GitHub Actions-Workflows. Der Workflow meldet sich mit einem Dienstprinzipal bei Fabric an, installiert die Rayfin CLI und führt rayfin up aus, um Ihren Code, das Datenbankschema und statische Inhalte auf den Zielarbeitsbereich anzuwenden.
Dieser Artikel zeigt Ihnen, wie das geht:
- Bereiten Sie einen Serviceprinzipal und einen Fabric-Arbeitsbereich für automatisierte Bereitstellungen vor.
- Konfigurieren Sie die Geheimnisse des GitHub-Repositorys, die der Workflow benötigt.
- Fügen Sie die Bereitstellungsworkflowdatei zu Ihrem Repository hinzu.
- Starten Sie Bereitstellungen automatisch auf
mainund manuell mit optionaler Unterstützung für destruktive Änderungen. - Verwenden Sie denselben Workflow für Featureverzweigungen und umgebungsspezifische Bereitstellungen.
Voraussetzungen
- Ein Fabric App-Projekt in einem GitHub Repository. Wenn Sie noch kein Projekt haben, lesen Sie Create your first Fabric Apps project, und übertragen Sie Ihren Anwendungscode in das Repository.
- Ein Fabric-Arbeitsbereich, in dem der Dienstprinzipal bereitstellen kann. Informationen zur Trennung von Umgebungen finden Sie unter Verwalten von Entwicklungs- und Prod-Umgebungen.
- Ein Microsoft Entra ID-Dienstprinzipal (App-Registrierung) mit einem Clientgeheimnis.
- Berechtigung zum Hinzufügen von secrets zum GitHub Repository.
Schritt 1: Erstellen eines Dienstprinzipals für Bereitstellungen
Der Workflow meldet sich nicht interaktiv an, sodass er anstelle eines interaktiven Benutzerkontos einen Dienstprinzipal verwendet.
- Registrieren Sie im portal Azure eine neue Anwendung unter Microsoft Entra ID>App-Registrierungen.
- Notieren Sie die Anwendungs-ID (Client) und die Verzeichnis-ID (Mandant).
- Erstellen Sie unter "Zertifikate und Geheime Schlüssel" einen neuen geheimen Clientschlüssel , und kopieren Sie den Wert. Speichern Sie sie sicher: Sie können sie später nicht mehr anzeigen.
- Erteilen Sie dem Dienstprinzipal die Berechtigung Contributor oder höher für den Ziel-Fabric-Arbeitsbereich, damit er das Fabric-App-Element erstellen und aktualisieren kann.
Important
Dienstprinzipalbereitstellungen erfordern Fabric Mandanteneinstellungen, mit denen Dienstprinzipale Fabric APIs verwenden können. Bestätigen Sie mit Ihrem Fabric Administrator, dass dies aktiviert ist.
Schritt 2: Hinzufügen geheimer Repositoryschlüssel
Wechseln Sie in Ihrem GitHub-Repository zu Settings>Secrets and variables>Actions und fügen Sie die folgenden Repositoryschlüssel hinzu:
| Geheimer Name | Value |
|---|---|
CLIENT_ID |
Die Anwendungs-ID (Client-ID) des Dienstprinzipals. |
TENANT_ID |
Die Verzeichnis-ID (Mandant). |
CLIENT_SECRET |
Der Wert des Clientgeheimnisses. |
FABRIC_WORKSPACE_NAME |
Der Name des Zielarbeitsbereichs Fabric (z. B. my-app-prod). |
Schritt 3: Hinzufügen der Workflowdatei
Erstellen Sie in Ihrem Repository die Datei .github/workflows/deploy-to-fabric.yml mit dem folgenden Inhalt:
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
Funktionsweise der einzelnen Abschnitte
-
on.push: Führt den Workflow bei jedem Push aufmainautomatisch aus. -
on.workflow_dispatch: Fügt eine Schaltfläche Run workflow in der benutzeroberfläche GitHub Actions mit einem Kontrollkästchen force hinzu. Das Aktivieren von force übergibt--forceanrayfin up, sodass destruktive Schemaänderungen (z. B. das Löschen von Spalten oder Tabellen) zulässig sind. Lassen Sie das Kontrollkästchen nicht aktiviert für sichere, nicht-destruktive Bereitstellungen. -
concurrency: Stellt sicher, dass pro Branch jeweils nur eine Bereitstellung gleichzeitig ausgeführt wird. Wenn ein neuer Push eingeht, während ein vorheriges Deployment noch läuft, wird der ältere Lauf zugunsten des neueren Commits abgebrochen. Diese Einstellung verhindert, dass zweirayfin upAufträge im selben Arbeitsbereich ausgeführt werden. -
env: Übergibt die Anmeldeinformationen des Dienstprinzipals und den Namen des Zielarbeitsbereichs an den Job. -
Install Rayfin CLI: Installiert die CLI global, sodassrayfinim PATH ist. -
Login to Fabric with service principal: Authentifiziert sich mithilfe der Umgebungsvariablen*. -
Deploy to Fabric: Führtrayfin upfür den konfigurierten Mandanten und Arbeitsbereich aus.--yesakzeptiert nicht destruktive Eingabeaufforderungen;--forcewird nur hinzugefügt, wenn die manuelle Ausführung angefordert wurde.
Schritt 4: Auslösen einer Bereitstellung
Sie können den Workflow auf zwei Arten auslösen:
-
Automatisch: Einen Commit in den
mainBranch pushen oder mergen. - Manually: Wechseln Sie in GitHub zu Actions>Deploy to Fabric>Run workflow. Wählen Sie die zu bereitstellende Verzweigung aus, und überprüfen Sie optional die Option "Destruktive Schemaänderungen zulassen", die zu Datenverlusten führen können, bevor Sie die Ausführung starten.
Nach Abschluss des Workflows gibt der Schritt Deploy to Fabric schritt im Ausführungsprotokoll die Fabric App-URL und die Bereitstellungs-ID aus.
Überlegungen und Einschränkungen
- Die Nebenläufigkeit gilt je Branch.
concurrency.groupenthältgithub.ref, sodass sich Bereitstellungen in verschiedenen Branches nicht gegenseitig abbrechen. Dieses Verhalten ist beabsichtigt, wenn Sie Branches verschiedenen Arbeitsbereichen zuordnen. - Destruktive Änderungen werden standardmäßig blockiert.
rayfin uplehnt Schema-Operationen ab, die zu Datenverlust führen können, es sei denn,--forcewird übergeben. Aktivieren Sie force nur bei einem manuellen Lauf, nachdem Sie die geplanten Vorgänge überprüft haben. - Arbeitsbereiche müssen vorhanden sein. Der Workflow erstellt keine Fabric-Arbeitsbereiche. Erstellen Sie diese im Fabric-Portal und gewähren Sie dem Dienstprinzipal zunächst Zugriff.