Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Automatiseer implementaties van een Fabric-app vanuit een GitHub opslagplaats naar een Fabric werkruimte met behulp van een GitHub Actions werkstroom. De workflow meldt zich bij Fabric aan met een service-principalaccount, installeert de Rayfin CLI en voert rayfin up uit om uw code, databaseschema en statische inhoud toe te passen op de doelwerkruimte.
In dit artikel leest u hoe u het volgende kunt doen:
- Bereid een service-principal en een Fabric werkruimte voor voor geautomatiseerde implementaties.
- Configureer de GitHub-repositorygeheimen die de workflow nodig heeft.
- Voeg het werkstroombestand voor de implementatie toe aan uw opslagplaats.
- Start implementaties automatisch via
mainen handmatig met optionele ondersteuning voor destructieve wijzigingen. - Gebruik dezelfde werkstroom voor functievertakkingen en omgevingsspecifieke implementaties.
Prerequisites
- Een Fabric-app-project in een GitHub opslagplaats. Als u er nog geen hebt, raadpleegt u Uw eerste Fabric Apps-project maken en uw toepassingscode naar de opslagplaats pushen.
- Een Fabric-werkruimte waarin de service-principal kan implementeren. Zie Ontwikkel- en prod-omgevingen beheren voor omgevingsscheiding.
- Een Microsoft Entra ID service-principal (app-registratie) met een clientgeheim.
- Machtiging voor het toevoegen van secrets aan de GitHub opslagplaats.
Stap 1: Een service-principal maken voor implementaties
De workflow meldt zich aan zonder gebruikersinteractie, dus wordt er een service-principal gebruikt in plaats van een gebruikersaccount voor interactieve aanmelding.
- Registreer in de Azure portal een nieuwe toepassing onder Microsoft Entra ID>App-registraties.
- Noteer de Applicatie-ID (client) en de Directory-ID (tenant).
- Maak onder Certificaten en geheimen een nieuw clientgeheim en kopieer de waarde. Sla het veilig op: u kunt het later niet meer weergeven.
- Verleen de service-principal de machtiging Contributor of hoger voor de doel-Fabric-werkruimte, zodat deze het Fabric-app-item kan maken en bijwerken.
Important
Voor implementaties van service-principals zijn Fabric tenantinstellingen vereist waarmee service-principals Fabric API's kunnen gebruiken. Bevestig bij uw Fabric-beheerder dat dit is ingeschakeld.
Stap 2: opslagplaatsgeheimen toevoegen
Ga in uw GitHub opslagplaats naar Settings>Secrets and variables>Actions en voeg de volgende opslagplaatsgeheimen toe:
| Geheime naam | Value |
|---|---|
CLIENT_ID |
De toepassings-id (client-id) van de service-principal. |
TENANT_ID |
De id van de Directory (tenant). |
CLIENT_SECRET |
De waarde van het clientgeheim. |
FABRIC_WORKSPACE_NAME |
De naam van de doelwerkruimte Fabric (bijvoorbeeld my-app-prod). |
Stap 3: Het werkstroombestand toevoegen
Maak in uw opslagplaats het bestand .github/workflows/deploy-to-fabric.yml met de volgende inhoud:
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
Wat elke sectie doet
-
on.push: Voert de werkstroom automatisch uit bij elke push naarmain. -
on.workflow_dispatch: Hiermee voegt u een knop Run-werkstroom toe aan de gebruikersinterface van GitHub Actions met een selectievakje force. Door force in te schakelen wordt--forcedoorgegeven aanrayfin up, zodat destructieve schemawijzigingen (zoals het verwijderen van kolommen of tabellen) zijn toegestaan. Laat het uitgeschakeld voor veilige, niet-destructieve implementaties. -
concurrency: Zorgt ervoor dat er per branch slechts één deployment tegelijk wordt uitgevoerd. Als een nieuwe push landt terwijl een vorige implementatie nog steeds wordt uitgevoerd, wordt de oudere uitvoering geannuleerd ten gunste van de nieuwere doorvoer. Met deze instelling voorkomt u dat tweerayfin uptaken tegelijk op dezelfde werkruimte worden uitgevoerd. -
env: geeft de referenties van de service-principal en de naam van de doelwerkruimte door aan de taak. -
Install Rayfin CLI: installeert de CLI globaal, zodatrayfinop het PATH staat. -
Login to Fabric with service principal: verifieert met behulp van de omgevingsvariabelen*. -
Deploy to Fabric: voertrayfin upuit op de geconfigureerde tenant en werkruimte.--yesaccepteert niet-destructieve prompts;--forcewordt alleen toegevoegd wanneer de handmatige uitvoering dit aanvraagt.
Stap 4: Een implementatie activeren
U kunt de werkstroom op twee manieren activeren:
-
Automatisch: Een commit pushen naar of samenvoegen in de
mainbranch. - Manually: Ga in GitHub naar Actions>Deploy to Fabric>Run workflow. Selecteer de branch die u wilt deployen en vink desgewenst Destructieve schemawijzigingen toestaan die kunnen leiden tot gegevensverlies aan voordat de uitvoering begint.
Nadat de werkstroom is voltooid, worden in de stap Deploy naar Fabric stap in het uitvoeringslogboek de URL van de Fabric app en de implementatie-id afgedrukt.
Overwegingen en beperkingen
- Gelijktijdigheid is per vertakking. De
concurrency.groupbevatgithub.ref, zodat implementaties naar verschillende branches elkaar niet annuleren. Dit gedrag is bewust wanneer u branches toewijst aan verschillende werkruimtes. - Destructieve wijzigingen worden standaard geblokkeerd.
rayfin upweigert schemabewerkingen die gegevens kunnen verliezen, tenzij--forcedeze worden doorgegeven. Schakel force alleen in voor een handmatige uitvoering wanneer u de geplande bewerkingen hebt beoordeeld. - Werkruimten moeten bestaan. De workflow maakt geen Fabric-werkruimten aan. Maak ze in de Fabric-portal en geef de service-principal eerst toegang.