Distribuer en Fabric-app med GitHub Actions

Automatiser distribusjoner av en Fabric-app fra et GitHub-repositorium til et Fabric-arbeidsområde ved å bruke en GitHub Actions-arbeidsflyt. Arbeidsflyten logger inn for å Fabric med en tjenesteprincipal, installerer Rayfin CLI, og kjører rayfin up for å anvende koden, databaseskjemaet og statisk innhold på målarbeidsområdet. Denne artikkelen viser deg hvordan du gjør følgende:

  • Forbered en tjenesteprinsipp og et Fabric-arbeidsområde for automatiserte distribusjoner.
  • Konfigurer GitHub-repositoriets hemmeligheter arbeidsflyten trenger.
  • Legg til deployeringsarbeidsflytfilen i repositoryet ditt.
  • Utløs distribusjoner automatisk på main og manuelt med valgfri støtte for destruktive endringer.
  • Gjenbruk samme arbeidsflyt for feature branches og miljøspesifikke distribusjoner.

Forutsetninger

  • Et Fabric-appprosjekt i et GitHub-arkiv. Hvis du ikke har en ennå, se Create your first Fabric Apps project og send applikasjonskoden din til repositoriet.
  • Et Fabric-arbeidsområde som tjenesteprincipalen kan distribuere til. For miljøseparasjon, se Administrer utviklings- og produksjonsmiljøer.
  • En Microsoft Entra ID-tjenesteprincipal (appregistrering) med en klienthemmelighet.
  • Tillatelse til å legge til secrets i GitHub-repositoriet.

Trinn 1: Opprett en tjenesteprinsipp for distribusjoner

Arbeidsflyten logger inn ikke-interaktivt, så den bruker en tjenesteprinsipp i stedet for en interaktiv brukerkonto.

  1. I Azure-portalen, registrer en ny søknad under Microsoft Entra ID>App registrations.
  2. Registrer applikasjons-ID-en (klient-ID-en) og katalog-ID-en (leietaker-ID-en).
  3. Under Sertifikater og hemmeligheter, opprett en ny klienthemmelighet og kopier verdien. Oppbevar det sikkert: du kan ikke se det igjen senere.
  4. Gi tjenesteprincipalen Contributor eller høyere tillatelse på målarbeidsområdet Fabric slik at den kan opprette og oppdatere Fabric app-elementet.

Important

Distribusjoner av tjenesteprinsipper krever Fabric-leietakerinnstillinger som lar tjenesteprinsipper bruke Fabric-API-er. Bekreft med din Fabric-administrator at dette er aktivert.

Steg 2: Legg til reposito-hemmeligheter

I ditt GitHub-repositorium, gå til Settings>Secrets and variables>Actions og legg til følgende reposio-hemmeligheter:

Hemmelig navn Verdi
CLIENT_ID Applikasjons-ID-en (klient-ID-en) til tjenestehovedpersonen.
TENANT_ID The Directory (tenant) ID.
CLIENT_SECRET Kundens hemmelige verdi.
FABRIC_WORKSPACE_NAME Navnet på målet Fabric arbeidsområde (for eksempel my-app-prod).

Trinn 3: Legg til arbeidsflytfilen

I ditt repository, opprett filen .github/workflows/deploy-to-fabric.yml med følgende innhold:

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

Hva hver seksjon gjør

  • on.push: Kjører arbeidsflyten automatisk for hvert push til main.
  • on.workflow_dispatch: Legger til en Run workflow-knapp i GitHub Actions UI med en force avkrysningsboks. Muliggjøring av kraftoverganger--force til rayfin up slik at destruktive skjemaendringer (som å fjerne kolonner eller tabeller) er tillatt. La det være ukontrollert for trygge, ikke-destruktive utplasseringer.
  • concurrency: Sikrer at kun én utrulling per gren kjøres om gangen. Hvis en ny push lander mens en tidligere deploy fortsatt kjører, blir den eldre runen kansellert til fordel for den nyere commit. Denne innstillingen forhindrer at to rayfin up jobber konkurrerer på samme arbeidsområde.
  • env: Sender tjenesteprincipalens legitimasjon og målarbeidsplassens navn inn i jobben.
  • Install Rayfin CLI: Installerer CLI globalt, så rayfin den er på PATH.
  • Login to Fabric with service principal: Autentiserer ved å bruke miljøvariablene *.
  • Deploy to Fabric: Kjører rayfin up mot den konfigurerte leietakeren og arbeidsområdet. --yes aksepterer ikke-destruktive oppfordringer; --force legges kun til når den manuelle kjøringen ber om det.

Trinn 4: Utløs en utrulling

Du kan utløse arbeidsflyten på to måter:

  • Automatisk: Skyv eller slå sammen en commit til grenen main .
  • Manuelt: I GitHub, gå til Actions>Deploy to Fabric>Run workflow. Velg grenen som skal distribueres og velg eventuelt Tillat destruktive skjemaendringer som kan føre til datatap før starten av kjøringen.

Etter at arbeidsflyten er ferdig, skriver steget Deploy to Fabric i kjøreloggen ut Fabric-appens URL og distribusjons-ID-en.

Hensyn og begrensninger

  • Felles forløp er per gren. Det concurrency.group inkluderer github.ref, slik at utplasseringer til forskjellige grener ikke kansellerer hverandre. Denne oppførselen er bevisst når du mapper grener til forskjellige arbeidsområder.
  • Destruktive endringer blokkeres som standard. rayfin up nekter skjemaoperasjoner som kan miste data med mindre --force de blir godkjent. Aktiver kun makt for en manuell kjøring når du har gjennomgått de planlagte operasjonene.
  • Arbeidsplasser må eksistere. Arbeidsflyten lager ikke Fabric-arbeidsområder. Opprett dem i Fabric-portalen og gi tjenestelederen tilgang først.