Fabric-alkalmazás telepítése a GitHub Actions használatával

Automatizálhatja egy Fabric-alkalmazás üzembe helyezését egy GitHub-adattárból egy Fabric munkaterületre egy GitHub Actions munkafolyamat használatával. A munkafolyamat service principal használatával jelentkezik be a Fabricbe, telepíti a Rayfin CLI-t, majd a rayfin up futtatásával alkalmazza a kódot, az adatbázissémát és a statikus tartalmat a célmunkaterületre. Ez a cikk bemutatja, hogyan:

  • Készítsen elő egy szolgáltatásnév-identitást és egy Fabric-munkaterületet az automatizált üzembe helyezésekhez.
  • Konfigurálja a munkafolyamathoz szükséges GitHub adattár titkos kulcsát.
  • Adja hozzá az üzembehelyezési munkafolyamat-fájlt az adattárhoz.
  • A telepítéseket automatikusan a(z) main elemen, illetve manuálisan is elindíthatja, opcionális destruktív módosítások támogatásával.
  • Ugyanazt a munkafolyamatot használja a funkcióágakhoz és a környezetenkénti telepítésekhez.

Prerequisites

  • Egy Fabric alkalmazásprojekt egy GitHub-adattárban. Ha még nem rendelkezik ilyennel, tekintse meg A Fabric Apps-projekt létrehozása és az alkalmazáskód leküldése az adattárba.
  • Egy Fabric-munkaterület, amelybe a service principal telepíthet. A környezetek elkülönítését a fejlesztői és a produkált környezetek kezelése című témakörben talál.
  • Egy Microsoft Entra ID szolgáltatásnév (alkalmazásregisztráció) ügyfélkóddal.
  • Engedély secrets hozzáadásához az GitHub adattárhoz.

1. lépés: Szolgáltatásnév létrehozása üzembe helyezéshez

A munkafolyamat nem interaktívan jelentkezik be, ezért interaktív felhasználói fiók helyett service principalt használ.

  1. A Azure portálon regisztráljon egy új alkalmazást a Microsoft Entra ID>Alkalmazásregisztrációk alatt.
  2. Jegyezze fel az alkalmazás (ügyfél) azonosítóját és a címtár (bérlő) azonosítóját.
  3. A Tanúsítványok > titkos kódok területen hozzon létre egy új ügyfélkulcsot , és másolja ki az értéket. Biztonságosan tárolhatja: később nem tekintheti meg újra.
  4. Adjon a szolgáltatásnévnek Contributor vagy magasabb szintű jogosultságot a cél Fabric-munkaterületen, hogy létrehozhassa és frissíthesse a Fabric-alkalmazáselemet.

Important

A szolgáltatásnevek általi üzembe helyezéshez olyan Fabric-bérlői beállítások szükségesek, amelyek engedélyezik, hogy a szolgáltatásnevek használják a Fabric API-kat. Győződjön meg a Fabric rendszergazdájától, hogy ez engedélyezve van.

2. lépés: Adattár titkos kulcsok hozzáadása

A GitHub adattárban lépjen a Settings>Secrets és változók>Actions elemre, és adja hozzá a következő tárház titkos kulcsait:

Titkos név Value
CLIENT_ID A szolgáltatásnév alkalmazás-(ügyfél-) azonosítója.
TENANT_ID A címtár (bérlő) azonosítója.
CLIENT_SECRET Az ügyféltitok értéke.
FABRIC_WORKSPACE_NAME A cél Fabric munkaterület neve (például my-app-prod).

3. lépés: A munkafolyamat-fájl hozzáadása

Az adattárban hozza létre a fájlt .github/workflows/deploy-to-fabric.yml a következő tartalommal:

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

Az egyes szakaszok feladata

  • on.push: A munkafolyamat automatikusan lefut minden push esetén a(z) main ágra.
  • on.workflow_dispatch: Hozzáad egy Run munkafolyamatot gombot a GitHub Actions felhasználói felületén egy force jelölőnégyzettel. A force engedélyezése átadja a --force paramétert a rayfin up számára, így az olyan destruktív sémamódosítások is engedélyezettek, mint az oszlopok vagy táblák törlése. Hagyja jelöletlenül a biztonságos, nem destruktív üzembe helyezésekhez.
  • concurrency: Biztosítja, hogy áganként egyszerre csak egy telepítés futhat. Ha új push érkezik, miközben egy korábbi telepítés még fut, a korábbi futás megszakad az újabb commit javára. Ez a beállítás megakadályozza, hogy két rayfin up feladat versenyezzon ugyanazon a munkaterületen.
  • env: Átadja a szolgáltatásnévhez tartozó hitelesítő adatokat és a cél munkaterület nevét a feladatnak.
  • Install Rayfin CLI: Globálisan telepíti a parancssori felületet, így rayfin a PATH-on is.
  • Login to Fabric with service principal: Hitelesítés a * környezeti változókkal.
  • Deploy to Fabric: Lefuttatja a(z) rayfin up elemet a konfigurált bérlőn és munkaterületen. --yes nem romboló kéréseket fogad el; --force csak akkor lesz hozzáadva, ha a manuális futtatás kérte.

4. lépés: Üzembe helyezés aktiválása

A munkafolyamat kétféleképpen indítható el:

  • Automatikusan: Véglegesítés leküldése vagy egyesítése az main ágba.
  • Manuálisan: A GitHubon lépjen a Actions>Üzembe helyezés a Fabricba>Munkafolyamat futtatása elemre. Jelölje ki az ágat az üzembe helyezéshez, és ha szükséges, ellenőrizze a futtatás megkezdése előtt az adatvesztést okozó romboló sémamódosítások engedélyezése jelölőnégyzetet.

A munkafolyamat befejezése után a A futtatási napló Fabric lépése kinyomtatja a Fabric alkalmazás URL-címét és az üzembe helyezés azonosítóját.

Megfontolások és korlátok

  • A párhuzamosság áganként értendő. A concurrency.group tartalmazza github.ref, így a különböző ágakon történő üzembe helyezés nem szakítja meg egymást. Ez a viselkedés szándékos, amikor az ágakat különböző munkaterületekhez rendeli.
  • A romboló módosítások alapértelmezés szerint le vannak tiltva. rayfin up elutasítja azokat a sémaműveleteket, amelyek adatvesztést okozhatnak, hacsak nem --force kerül átadásra. Csak akkor engedélyezze az erő használatát manuális futtatáshoz, ha áttekintette a tervezett műveleteket.
  • A munkaterületeknek létezniük kell. A munkafolyamat nem hoz létre Fabric munkaterületeket. Hozza létre őket a Fabric portálon, és először biztosítson hozzáférést a szolgáltatásnév-azonosítónak.