Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Mengotomatiskan penyebaran aplikasi Fabric dari repositori GitHub ke ruang kerja Fabric dengan menggunakan alur kerja GitHub Actions. Alur kerja masuk ke Fabric dengan perwakilan layanan, menginstal Rayfin CLI, dan menjalankan rayfin up untuk menerapkan kode, skema database, dan konten statis Anda ke ruang kerja target.
Artikel ini memperlihatkan kepada Anda cara:
- Siapkan perwakilan layanan dan ruang kerja Fabric untuk penyebaran otomatis.
- Atur secret repositori GitHub yang diperlukan alur kerja.
- Tambahkan file alur kerja penyebaran ke repositori Anda.
- Picu deployment secara otomatis pada
maindan secara manual dengan dukungan opsional untuk perubahan destruktif. - Gunakan kembali alur kerja yang sama untuk cabang fitur dan penerapan khusus lingkungan.
Prasyarat
- Proyek aplikasi Fabric di repositori GitHub. Jika Anda belum memilikinya, lihat Buat proyek Fabric Apps pertama Anda dan dorong kode aplikasi Anda ke repositori.
- Ruang kerja Fabric yang dapat menjadi target deployment oleh prinsipal layanan. Untuk pemisahan lingkungan, lihat Mengelola lingkungan dev dan prod.
- Perwakilan layanan Microsoft Entra ID (pendaftaran aplikasi) dengan rahasia klien.
- Izin untuk menambahkan secrets ke repositori GitHub.
Langkah 1: Buat prinsipal layanan untuk deployment
Alur kerja ini masuk secara non-interaktif, sehingga menggunakan service principal alih-alih akun pengguna interaktif.
- Di portal Azure, daftarkan aplikasi baru di bawah Microsoft Entra ID>Pendaftaran aplikasi.
- Rekam ID Aplikasi (klien) dan ID Direktori (penyewa).
- Di bawah Sertifikat & rahasia, buat rahasia klien baru dan salin nilainya. Simpan dengan aman: Anda tidak dapat melihatnya lagi nanti.
- Berikan perwakilan layanan Contributor atau izin yang lebih tinggi pada ruang kerja Fabric target sehingga dapat membuat dan memperbarui item aplikasi Fabric.
Important
Penerapan service principal memerlukan pengaturan tenant Fabric yang mengizinkan service principal menggunakan API Fabric. Konfirmasikan dengan administrator Fabric Anda bahwa ini diaktifkan.
Langkah 2: Menambahkan rahasia repositori
Di repositori GitHub Anda, buka Settings>Secret dan variabel>Actions dan tambahkan rahasia repositori berikut:
| Nama rahasia | Nilai |
|---|---|
CLIENT_ID |
ID Aplikasi (klien) dari prinsipal layanan. |
TENANT_ID |
ID Direktori (penyewa). |
CLIENT_SECRET |
Nilai rahasia klien. |
FABRIC_WORKSPACE_NAME |
Nama ruang kerja target Fabric (misalnya, my-app-prod). |
Langkah 3: Tambahkan file alur kerja
Di repositori Anda, buat file .github/workflows/deploy-to-fabric.yml dengan konten berikut:
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
Apa yang dilakukan setiap bagian
-
on.push: Menjalankan alur kerja secara otomatis pada setiap pendorongan kemain. -
on.workflow_dispatch: Menambahkan tombol Jalankan alur kerja di UI GitHub Actions dengan kotak centang force. Mengaktifkan force akan meneruskan--forcekerayfin up, sehingga perubahan skema yang destruktif (seperti menghapus kolom atau tabel) diizinkan. Biarkan tidak dicentang untuk penyebaran yang aman dan tidak merusak. -
concurrency: Memastikan hanya satu penyebaran per cabang yang berjalan pada satu waktu. Jika ada push baru masuk saat proses deploy sebelumnya masih berjalan, proses yang lebih lama akan dibatalkan agar commit yang lebih baru diprioritaskan. Pengaturan ini mencegah duarayfin uptugas berjalan secara bersamaan pada ruang kerja yang sama. -
env: Meneruskan kredensial prinsipal layanan dan nama ruang kerja target ke tugas. -
Install Rayfin CLI: Menginstal CLI secara global begitu jugarayfindi PATH. -
Login to Fabric with service principal: Mengautentikasi menggunakan variabel lingkungan*. -
Deploy to Fabric: Menjalankanrayfin uppada penyewa dan ruang kerja yang telah dikonfigurasi.--yesmenerima perintah yang tidak merusak;--forceditambahkan hanya ketika eksekusi manual memintanya.
Langkah 4: Memicu penyebaran
Anda dapat memicu alur kerja dengan dua cara:
-
Otomatis: Push atau gabungkan komit ke cabang
main. - Manually: Dalam GitHub, buka Actions>Deploy ke Fabric>Buat alur kerja. Pilih cabang untuk disebarkan dan secara opsional centang Izinkan perubahan skema destruktif yang dapat mengakibatkan kehilangan data sebelum memulai eksekusi.
Setelah alur kerja selesai, langkah Deploy ke Fabric dalam log eksekusi mencetak URL aplikasi Fabric dan ID penyebaran.
Pertimbangan dan keterbatasan
- Konkurensi adalah per cabang. termasuk
concurrency.groupgithub.ref, sehingga penyebaran ke cabang yang berbeda tidak membatalkan satu sama lain. Perilaku ini memang disengaja saat Anda memetakan cabang ke ruang kerja yang berbeda. - Perubahan destruktif diblokir secara default.
rayfin upmenolak operasi skema yang dapat kehilangan data kecuali--forcediteruskan. Gunakan force hanya untuk eksekusi manual setelah Anda meninjau operasi yang direncanakan. - Ruang kerja harus ada. Alur kerja tidak membuat ruang kerja Fabric. Buat item tersebut di portal Fabric dan berikan akses kepada service principal terlebih dahulu.