Wdrażanie aplikacji Fabric przy użyciu GitHub Actions

Automatyzowanie wdrożeń aplikacji Fabric z repozytorium GitHub do obszaru roboczego Fabric przy użyciu przepływu pracy GitHub Actions. Przepływ pracy loguje się do usługi Fabric przy użyciu nazwy głównej usługi, instaluje narzędzie wiersza polecenia Rayfin i uruchamia rayfin up, aby wdrożyć kod, schemat bazy danych i zasoby statyczne w docelowym obszarze roboczym. W tym artykule pokazano, jak wykonać następujące działania:

  • Przygotuj jednostkę usługi głównej i obszar roboczy usługi Fabric do zautomatyzowanych wdrożeń.
  • Skonfiguruj sekrety repozytorium GitHub wymagane przez przepływ pracy.
  • Dodaj plik przepływu pracy wdrożenia do repozytorium.
  • Uruchamiaj wdrożenia automatycznie na main oraz ręcznie z opcjonalną obsługą destrukcyjnych zmian.
  • Użyj tego samego przepływu pracy dla gałęzi funkcji i wdrożeń specyficznych dla środowiska.

Wymagania wstępne

  • Projekt aplikacji Fabric w repozytorium GitHub. Jeśli jeszcze go nie masz, zobacz Utwórz swój pierwszy projekt Fabric Apps i wypchnij kod aplikacji do repozytorium.
  • Obszar roboczy Fabric, do którego może zostać wdrożona jednostka usługi. Aby uzyskać informacje na temat separacji środowiska, zobacz Zarządzanie środowiskami deweloperskimi i prodowymi.
  • Jednostka usługi Microsoft Entra ID (rejestracja aplikacji) z kluczem tajnym klienta.
  • Uprawnienie do dodawania secrets do repozytorium GitHub.

Krok 1. Utwórz nazwę główną usługi na potrzeby wdrożeń

Przepływ pracy loguje się w trybie nieinteraktywnym, więc używa jednostki usługi zamiast interaktywnego konta użytkownika.

  1. W portalu Azure zarejestruj nową aplikację w Microsoft Entra ID>Rejestracje aplikacji.
  2. Zarejestruj identyfikator aplikacji (klienta) i identyfikator katalogu (dzierżawcy).
  3. W obszarze Certyfikaty i wpisy tajne utwórz nowy klucz tajny klienta i skopiuj wartość. Zapisz go bezpiecznie: nie możesz wyświetlić go ponownie później.
  4. Udziel nazwie głównej usługi uprawnień Contributor lub wyższych w docelowym obszarze roboczym Fabric, aby mogła tworzyć i aktualizować element aplikacji Fabric.

Ważna

Wdrożenia z użyciem nazw głównych usługi wymagają ustawień dzierżawy Fabric, które zezwalają nazwom głównym usługi na korzystanie z interfejsów API usługi Fabric. Potwierdź u administratora usługi Fabric, że ta funkcja jest włączona.

Krok 2: Dodaj sekrety repozytorium

W repozytorium w serwisie GitHub przejdź do sekcji Settings>Secrets and variables>Actions i dodaj następujące sekrety repozytorium:

Tajna nazwa Value
CLIENT_ID Identyfikator aplikacji (klienta) jednostki usługi.
TENANT_ID Identyfikator katalogu (dzierżawy).
CLIENT_SECRET Wartość klucza tajnego klienta.
FABRIC_WORKSPACE_NAME Nazwa docelowego obszaru roboczego Fabric (na przykład my-app-prod).

Krok 3. Dodawanie pliku przepływu pracy

W repozytorium utwórz plik .github/workflows/deploy-to-fabric.yml z następującą zawartością:

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

Co robi każda sekcja

  • on.push: Automatycznie uruchamia przepływ pracy po każdym wypchnięciu do main.
  • on.workflow_dispatch: Dodaje przycisk Uruchom przepływ pracy w interfejsie GitHub Actions z polem wyboru force. Włączenie opcji force przekazuje --force do rayfin up, dzięki czemu dozwolone są destrukcyjne zmiany schematu (takie jak usuwanie kolumn lub tabel). Pozostaw to pole niezaznaczone, aby wdrożenia były bezpieczne i nieniszczące.
  • concurrency: Zapewnia, że dla każdej gałęzi jednocześnie uruchamia się tylko jedno wdrożenie. Jeśli pojawi się nowy push, gdy poprzednie wdrożenie wciąż trwa, wcześniejsze uruchomienie zostanie anulowane na rzecz nowszego commita. To ustawienie uniemożliwia rywalizację dwóch zadań rayfin up o ten sam obszar roboczy.
  • env: przekazuje do zadania poświadczenia jednostki usługi i docelową nazwę obszaru roboczego.
  • Install Rayfin CLI: Instaluje CLI globalnie, aby rayfin było dostępne w zmiennej PATH.
  • Login to Fabric with service principal: uwierzytelnia się przy użyciu zmiennych środowiskowych *.
  • Deploy to Fabric: uruchamia rayfin up dla skonfigurowanej dzierżawy i obszaru roboczego. --yes akceptuje nieniszczące polecenia; --force jest dodawany tylko wtedy, gdy zażądano tego podczas ręcznego uruchomienia.

Krok 4. Wyzwalanie wdrożenia

Przepływ pracy można wyzwolić na dwa sposoby:

  • Automatycznie: wypychanie lub scalanie zatwierdzenia z gałęzią main .
  • Ręcznie: W witrynie GitHub przejdź do Actions>Deploy to Fabric>Run workflow. Wybierz gałąź do wdrożenia i opcjonalnie zaznacz opcję Zezwalaj na destrukcyjne zmiany w schemacie, które mogą spowodować utratę danych przed rozpoczęciem uruchomienia.

Po zakończeniu przepływu pracy w dzienniku uruchomienia krok Wdróż do Fabric wyświetla adres URL aplikacji Fabric oraz identyfikator wdrożenia.

Uwagi i ograniczenia

  • Współbieżność dotyczy każdej gałęzi. concurrency.group obejmuje github.ref, więc wdrożenia do różnych gałęzi nie anulują się nawzajem. To zachowanie jest celowe, gdy mapujesz gałęzie do różnych obszarów roboczych.
  • Zmiany destrukcyjne są domyślnie blokowane. rayfin up odrzuca operacje na schemacie, które mogą spowodować utratę danych, jeśli nie zostanie przekazane --force. Włączaj opcję force dla ręcznego uruchomienia tylko po przejrzeniu planowanych operacji.
  • Obszary robocze muszą istnieć. Przepływ pracy nie tworzy obszarów roboczych Fabric. Utwórz je w portalu Fabric i najpierw przyznaj jednostce usługi dostęp.