ปรับใช้แอป Fabric ด้วย GitHub Actions

ปรับใช้แอป Fabric โดยอัตโนมัติจากที่เก็บ GitHub ไปยังพื้นที่ทํางาน Fabric โดยใช้เวิร์กโฟลว์ GitHub Actions เวิร์กโฟลว์ลงชื่อเข้าใช้ Fabric ด้วยบริการหลัก ติดตั้ง Rayfin CLI และเรียกใช้ rayfin up เพื่อใช้โค้ด สคีมาฐานข้อมูล และเนื้อหาแบบคงที่กับพื้นที่ทํางานเป้าหมาย บทความนี้แสดงให้คุณรู้จักวิธี:

  • เตรียมบริการหลักและพื้นที่ทํางาน Fabric สําหรับการปรับใช้อัตโนมัติ
  • กําหนดค่าข้อมูลลับของที่เก็บ GitHub ที่เวิร์กโฟลว์ต้องการ
  • เพิ่มไฟล์เวิร์กโฟลว์การปรับใช้ไปยังที่เก็บของคุณ
  • ทริกเกอร์การปรับใช้โดยอัตโนมัติ main และด้วยตนเองด้วยการสนับสนุนการเปลี่ยนแปลงแบบทําลายล้าง
  • ใช้เวิร์กโฟลว์เดียวกันซ้ําสําหรับสาขาคุณลักษณะและการปรับใช้เฉพาะสภาพแวดล้อม

ข้อกําหนดเบื้องต้น

ขั้นตอนที่ 1: สร้างบริการหลักสําหรับการปรับใช้

เวิร์กโฟลว์ลงชื่อเข้าใช้แบบไม่โต้ตอบ ดังนั้นจึงใช้บริการหลักแทนบัญชีผู้ใช้แบบโต้ตอบ

  1. ในพอร์ทัล Azure ให้ลงทะเบียนแอปพลิเคชันใหม่ภายใต้ Microsoft Entra ID>App registrations
  2. บันทึกรหัสแอปพลิเคชัน (ไคลเอ็นต์) และรหัสไดเรกทอรี (ผู้เช่า)
  3. ภายใต้ ใบรับรองและข้อมูลลับ ให้สร้าง ข้อมูลลับของไคลเอ็นต์ ใหม่และคัดลอกค่า จัดเก็บอย่างปลอดภัย: คุณจะไม่สามารถดูได้อีกในภายหลัง
  4. ให้สิทธิ์แก่บริการหลัก Contributor หรือสูงกว่าบนพื้นที่ทํางาน Fabric เป้าหมาย เพื่อให้สามารถสร้างและอัปเดตรายการแอป Fabric ได้

Important

การปรับใช้บริการหลักจําเป็นต้องมีการตั้งค่าผู้เช่า Fabric ที่อนุญาตให้บริการหลักใช้ Fabric API ยืนยันกับผู้ดูแลระบบ Fabric ของคุณว่าเปิดใช้งานสิ่งนี้แล้ว

ขั้นตอนที่ 2: เพิ่มข้อมูลลับของที่เก็บ

ในที่เก็บ GitHub ของคุณ ให้ไปที่ Settings>Secrets and variables>Actions และเพิ่มข้อมูลลับของที่เก็บต่อไปนี้:

ชื่อข้อมูลลับ มูลค่า
CLIENT_ID รหัสแอปพลิเคชัน (ไคลเอ็นต์) ของบริการหลัก
TENANT_ID รหัสไดเรกทอรี (ผู้เช่า)
CLIENT_SECRET ค่าข้อมูลลับของไคลเอ็นต์
FABRIC_WORKSPACE_NAME ชื่อของเป้าหมาย Fabric พื้นที่ทํางาน (ตัวอย่างเช่น my-app-prod)

ขั้นตอนที่ 3: เพิ่มไฟล์เวิร์กโฟลว์

ในที่เก็บของคุณ ให้สร้างไฟล์ .github/workflows/deploy-to-fabric.yml ที่มีเนื้อหาต่อไปนี้:

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

หน้าที่ของแต่ละส่วน

  • on.push: เรียกใช้เวิร์กโฟลว์โดยอัตโนมัติทุกครั้งที่กดไปที่main
  • on.workflow_dispatch: เพิ่มปุ่ม เรียกใช้เวิร์กโฟลว์ ใน UI GitHub Actions ด้วยกล่องกาเครื่องหมาย force การเปิดใช้งานการส่งผ่าน--forceแรงเพื่อrayfin upการเปลี่ยนแปลงสคีมาที่ทําลายล้าง (เช่น การวางคอลัมน์หรือตาราง) ได้รับอนุญาต ปล่อยทิ้งไว้โดยไม่เลือกเพื่อการปรับใช้ที่ปลอดภัยและไม่ทําลาย
  • concurrency: ตรวจสอบให้แน่ใจว่ามีการปรับใช้เพียงครั้งเดียวต่อสาขา หากการพุชใหม่เกิดขึ้นในขณะที่การปรับใช้ก่อนหน้านี้ยังคงทํางานอยู่การเรียกใช้ที่เก่ากว่าจะถูกยกเลิกเพื่อสนับสนุนการคอมมิตที่ใหม่กว่า การตั้งค่านี้ป้องกันไม่ให้สอง rayfin up งานแข่งกันบนพื้นที่ทํางานเดียวกัน
  • env: ส่งข้อมูลประจําตัวของบริการหลักและชื่อพื้นที่ทํางานเป้าหมายลงในงาน
  • Install Rayfin CLI: ติดตั้ง CLI ทั่วโลกเพื่อให้ rayfin อยู่บน PATH
  • Login to Fabric with service principal: รับรองความถูกต้องโดยใช้ตัวแปรสภาพแวดล้อม *
  • Deploy to Fabric: เรียกใช้ rayfin up กับผู้เช่าและพื้นที่ทํางานที่กําหนดค่าไว้ --yes ยอมรับข้อความแจ้งที่ไม่ทําลาย --force จะถูกเพิ่มเฉพาะเมื่อมีการร้องขอการเรียกใช้ด้วยตนเองเท่านั้น

ขั้นตอนที่ 4: ทริกเกอร์การปรับใช้

คุณสามารถทริกเกอร์เวิร์กโฟลว์ได้สองวิธี:

  • โดยอัตโนมัติ: ผลักดันหรือผสานการคอมมิตไปยัง main สาขา
  • ด้วยตนเอง: ใน GitHub ไปที่ Actions>ปรับใช้กับ Fabric>เรียกใช้เวิร์กโฟลว์ เลือกสาขาที่จะปรับใช้และเลือก อนุญาตการเปลี่ยนแปลง Schema แบบทําลายล้างที่อาจส่งผลให้ข้อมูลสูญหาย ก่อนเริ่มการเรียกใช้

หลังจากเวิร์กโฟลว์เสร็จสิ้น ขั้นตอน ปรับใช้กับ Fabric ในบันทึกการเรียกใช้จะพิมพ์ URL ของแอป Fabric และรหัสการปรับใช้

ข้อควรพิจารณาและข้อจำกัด

  • การทํางานพร้อมกันเป็นต่อสาขา การ concurrency.group รวม github.refดังนั้นการปรับใช้กับสาขาต่างๆ จะไม่ยกเลิกซึ่งกันและกัน ลักษณะการทํางานนี้เป็นเจตนาเมื่อคุณแมปสาขาไปยังพื้นที่ทํางานที่แตกต่างกัน
  • การเปลี่ยนแปลงที่ทําลายล้างจะถูกบล็อกโดยค่าเริ่มต้น rayfin up ปฏิเสธการดําเนินการ Schema ที่อาจสูญเสียข้อมูลเว้นแต่ --force จะมีการส่งผ่าน เปิดใช้งาน บังคับ สําหรับการเรียกใช้ด้วยตนเองเมื่อคุณได้ตรวจสอบการดําเนินงานที่วางแผนไว้เท่านั้น
  • พื้นที่ทํางานต้องมีอยู่ เวิร์กโฟลว์ไม่ได้สร้างพื้นที่ทํางาน Fabric สร้างในพอร์ทัล Fabric และให้สิทธิ์การเข้าถึงบริการหลักก่อน