หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
สําคัญ
ขณะนี้โครงการ Power BI Desktop อยู่ในตัวอย่าง
fabric-cicd เป็นไลบรารี Python ที่พัฒนาโดย Microsoft ซึ่งมีวิธีการใช้โค้ดเป็นอันดับแรกสําหรับนักพัฒนา Fabric เพื่อปรับใช้รายการ Fabric จากตัวควบคุมต้นทางไปยังพื้นที่ทํางานโดยใช้รูปแบบคําจํากัดความของโค้ด เช่น แบบจําลองความหมายและรายงานโดยใช้รูปแบบไฟล์ PBIP
ในบทความนี้ คุณจะได้เรียนรู้วิธีการ:
- ปรับใช้ไฟล์ PBIP ด้วยตนเองจากเครื่องภายในเครื่องของคุณ
- กําหนดพารามิเตอร์ไฟล์ PBIP สําหรับการกําหนดค่าเฉพาะสภาพแวดล้อม
- ปรับใช้โดยอัตโนมัติด้วยการกําหนดเป้าหมายพื้นที่ทํางานตามสาขาโดยใช้ Azure DevOps หรือ GitHub Actions
เรียนรู้เพิ่มเติมเกี่ยวกับรูปแบบ PBIP ในโครงการ Power BI Desktop (PBIP) และภาพรวมการรวม Fabric Git
ทําไมต้อง fabric-cicd สําหรับการปรับใช้ PBIP
fabric-cicd ได้รับการออกแบบมาโดยเฉพาะสําหรับการปรับใช้สิ่งประดิษฐ์ Fabric ที่ควบคุมแหล่งที่มาและมีข้อดีหลายประการ:
- ใช้ REST API ดั้งเดิมของ Fabric - สร้างขึ้นบน Microsoft Fabric API อย่างเป็นทางการ เพื่อให้มั่นใจถึงความเข้ากันได้และการสนับสนุนในระยะยาว
- Python-native - การผสานรวมกับเวิร์กโฟลว์ DevOps ที่ใช้ Python ที่ทันสมัยได้อย่างราบรื่น
- การกําหนดพารามิเตอร์: การสนับสนุนในตัวสําหรับการกําหนดค่าเฉพาะสภาพแวดล้อม (รหัสพื้นที่ทํางาน แหล่งข้อมูล สตริงการเชื่อมต่อ)
- เป็นมิตรกับนักพัฒนา: สคริปต์ Python อย่างง่ายที่สามารถทํางานในเครื่องหรือในไปป์ไลน์ CI/CD
- การควบคุมการปรับใช้ที่ยืดหยุ่น: ปรับใช้เฉพาะประเภทรายการเฉพาะ (เช่น โมเดลความหมายที่ไม่มีรายงาน หรือโมเดลความหมายที่มีหรือไม่มีแคชข้อมูล) และตรวจสอบการกําหนดค่าที่สอดคล้องกัน เช่น หน้าหรือพารามิเตอร์เริ่มต้นโดยไม่ต้องมีการแทรกแซงด้วยตนเอง
- การล้างข้อมูลแบบ Orphan: ลบรายการออกจากพื้นที่ทํางานที่ไม่มีอยู่ในตัวควบคุมแหล่งที่มาโดยอัตโนมัติ
- การรับรองความถูกต้องที่เชื่อถือได้: ใช้ Azure Identity SDK พร้อมตัวเลือกการรับรองความถูกต้องหลายแบบ
Note
สําหรับเอกสารฉบับสมบูรณ์ โปรดดูเอกสารประกอบ fabric-cicd
ข้อกําหนดเบื้องต้น
ก่อนที่คุณจะเริ่มต้น ให้แน่ใจว่าคุณมี:
- Python (เวอร์ชัน 3.9 ถึง 3.12)
- โครงการ Power BI Desktop ที่บันทึกในรูปแบบ PBIP
- การเข้าถึงพื้นที่ทํางาน Microsoft Fabric ที่มีบทบาทผู้สนับสนุน
สําหรับการปรับใช้อัตโนมัติ คุณยังต้องมี:
- บริการหลักที่มีบทบาทผู้สนับสนุนเป็นอย่างน้อยในพื้นที่ทํางาน Fabric เป้าหมาย
- การเข้าถึง Azure DevOps หรือ GitHub Actions
- ไฟล์ PBIP ของคุณในการควบคุมแหล่งที่มา (Git, Azure DevOps หรือ GitHub)
เริ่มต้นใช้งานด่วน
การเริ่มต้นฉบับย่อนี้แสดงวิธีปรับใช้โครงการ PBIP จากเครื่องภายในเครื่องของคุณไปยังพื้นที่ทํางาน Fabric
1. ติดตั้ง fabric-cicd
เปิดเทอร์มินัลของคุณและติดตั้ง fabric-cicd:
pip install fabric-cicd
2. เตรียมโครงการ PBIP ของคุณ
ตรวจสอบให้แน่ใจว่าโครงการ PBIP ของคุณมีไฟล์ที่จําเป็น โครงสร้างโครงการ PBIP ทั่วไป:
my-powerbi-project/
├── SalesAnalytics.Report/
│ ├── definition.pbir
│ └── definition/
│ └── pages/
├── SalesAnalytics.SemanticModel/
│ ├── definition.pbism
│ └── definition/
│ ├── model.tmdl
│ ├── tables/
│ └── ...
└── SalesAnalytics.pbip
สําหรับข้อมูลโดยละเอียดเกี่ยวกับไฟล์และรูปแบบที่จําเป็น โปรดดู โฟลเดอร์รายงานโครงการ Power BI Desktop และโฟลเดอร์แบบจําลองความหมายของโครงการ Power BI Desktop
เคล็ดลับ
เมื่อต้องการสร้างโครงการ PBIP ให้เปิดไฟล์ PBIX ของคุณใน Power BI Desktop และบันทึกโดยใช้ไฟล์>บันทึกเป็น>โครงการ Power BI (.pbip) ดู โครงการ Power BI Desktop สําหรับรายละเอียดเพิ่มเติม
3. สร้างสคริปต์การปรับใช้
สร้าง deploy.py ไฟล์ในไดเรกทอรีโปรเจ็กต์ของคุณ:
import argparse
import sys
from azure.identity import InteractiveBrowserCredential, AzureCliCredential
from fabric_cicd import FabricWorkspace, publish_all_items
parser = argparse.ArgumentParser(description="Deploy PBIP to Fabric")
parser.add_argument("--workspace_id", type=str, required=True, help="Target workspace ID")
parser.add_argument("--environment", type=str, default="dev", help="Environment name")
args = parser.parse_args()
# Use AzureCliCredential in CI/CD, fall back to InteractiveBrowserCredential for local
try:
credential = AzureCliCredential()
except Exception:
credential = InteractiveBrowserCredential()
workspace_params = {
"workspace_id": args.workspace_id,
"environment": args.environment,
"repository_directory": ".",
"item_type_in_scope": ["SemanticModel", "Report"],
"token_credential": credential,
}
target_workspace = FabricWorkspace(**workspace_params)
publish_all_items(target_workspace)
4. ปรับใช้
เรียกใช้สคริปต์การปรับใช้ด้วยรหัสพื้นที่ทํางานของคุณ:
python deploy.py --workspace_id "11111111-1111-1111-1111-111111111111"
เบราว์เซอร์ของคุณจะเปิดขึ้นเพื่อตรวจสอบสิทธิ์ หลังจากลงชื่อเข้าใช้ fabric-cicd จะปรับใช้ไฟล์ PBIP ของคุณไปยังพื้นที่ทํางานเป้าหมาย คุณจะเห็นข้อความความคืบหน้า เช่น
[info] Publishing SemanticModel 'SalesAnalytics'
Operation in progress. Checking again in 1 second (Attempt 1)...
Published
[info] Publishing Report 'SalesAnalytics'
Published
โดยทั่วไปการปรับใช้จะใช้เวลา 20-30 วินาที ขึ้นอยู่กับขนาดของโมเดลความหมายของคุณ
Note
ครั้งแรกที่คุณปรับใช้แบบจําลองความหมายกับแหล่งข้อมูล คุณจําเป็นต้องกําหนดค่าข้อมูลประจําตัวของแหล่งข้อมูลด้วยตนเองในพอร์ทัล Fabric ไปที่ การตั้งค่า>แบบจําลอง>ความหมายของพื้นที่>ทํางาน ข้อมูลประจําตัวของแหล่งข้อมูล การปรับใช้ครั้งต่อๆ ไปจะใช้ข้อมูลประจําตัวที่บันทึกไว้ซ้ํา
การกําหนดพารามิเตอร์เฉพาะสภาพแวดล้อม
หนึ่งในคุณสมบัติที่ทรงพลังที่สุดของ fabric-cicd คือความสามารถในการกําหนดพารามิเตอร์ไฟล์ PBIP ของคุณสําหรับสภาพแวดล้อมที่แตกต่างกัน นี่เป็นสิ่งสําคัญเมื่อโมเดลความหมายของคุณอ้างอิงทรัพยากรเฉพาะสภาพแวดล้อม เช่น รหัสพื้นที่ทํางาน รหัสเลคเฮาส์ หรือสตริงการเชื่อมต่อ
ตัวอย่าง: กําหนดพารามิเตอร์รหัสพื้นที่ทํางานและเลคเฮาส์
สร้าง parameter.yml ไฟล์ในรากโปรเจ็กต์ของคุณเพื่อกําหนดค่าเฉพาะสภาพแวดล้อม:
find_replace:
# Replace workspace ID for DirectLake connection
- find_value: "11111111-1111-1111-1111-111111111111"
replace_value:
dev: "11111111-1111-1111-1111-111111111111" # Dev workspace
prod: "22222222-2222-2222-2222-222222222222" # Prod workspace
# Replace lakehouse ID for DirectLake semantic model
- find_value: "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
replace_value:
dev: "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" # Dev lakehouse
prod: "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb" # Prod lakehouse
เมื่อคุณเรียกใช้ python deploy.py --workspace_id "11111111-1111-1111-1111-111111111111" --environment devfabric-cicd โดยอัตโนมัติ:
- อ่านไฟล์ parameter.yml
- ค้นหาอินสแตนซ์
find_valueทั้งหมดในไฟล์คําจํากัดความ PBIP ของคุณ - แทนที่ด้วยสภาพแวดล้อมเฉพาะที่สอดคล้องกัน
replace_value - ปรับใช้คําจํากัดความที่แก้ไขไปยังพื้นที่ทํางานเป้าหมาย
ปรับใช้โดยอัตโนมัติ
คุณสามารถปรับใช้ PBIP โดยอัตโนมัติเพื่อเรียกใช้เมื่อใดก็ตามที่มีการรวมโค้ดเข้ากับสาขาเฉพาะในที่เก็บของคุณ ระบบอัตโนมัติเป็นไปตามตรรกะนี้:
- ไปป์ไลน์หรือเวิร์กโฟลว์จะทริกเกอร์เมื่อโค้ดถูกส่งไปยังสาขาที่กําหนดค่าไว้ (เช่น
devหรือmain) - ชื่อสาขากําหนดสภาพแวดล้อมเป้าหมายและรหัสพื้นที่ทํางาน
- สคริปต์การปรับใช้จะทํางานโดยอัตโนมัติด้วยพารามิเตอร์ที่เหมาะสม
- สิ่งประดิษฐ์ PBIP ของคุณปรับใช้กับพื้นที่ทํางานที่ถูกต้องสําหรับสภาพแวดล้อมนั้น
ส่วนนี้ครอบคลุมขั้นตอนการตั้งค่าทั่วไปสําหรับทั้ง Azure DevOps และ GitHub Actions ตามด้วยคําแนะนําการกําหนดค่าเฉพาะแพลตฟอร์ม
ตั้งค่า
ก่อนกําหนดค่าแพลตฟอร์ม CI/CD ให้ทําตามขั้นตอนการตั้งค่าทั่วไปเหล่านี้:
1. สร้างบริการหลัก
สร้างบริการหลักใน Azure AD ด้วยบทบาทผู้สนับสนุนหรือผู้ดูแลระบบในพื้นที่ทํางาน Fabric ของคุณ
2. เพิ่มบริการหลักไปยังพื้นที่ทํางาน Fabric
- เปิดพอร์ทัล Fabric และนําทางไปยังพื้นที่ทํางานเป้าหมายแต่ละแห่ง (dev, prod)
- ไปที่การตั้งค่า > พื้นที่ทํางานจัดการการเข้าถึง
- เพิ่มบริการหลักด้วยบทบาทผู้สนับสนุนหรือผู้ดูแลระบบ
Note
ต้องเปิดใช้งานบริการหลักที่ระดับผู้เช่าเพื่อใช้ Fabric API สําหรับข้อมูลเพิ่มเติม โปรดดู บริการ หลักสามารถเรียกใช้ API สาธารณะของ Fabric ได้
3. กําหนดค่าสาขาในที่เก็บของคุณ
สร้างสาขาที่คุณจะใช้สําหรับระบบอัตโนมัติ สําหรับตัวอย่างในบทความนี้:
- สร้าง
devสาขาสําหรับการปรับใช้สภาพแวดล้อมการพัฒนา - สร้าง
mainสาขาสําหรับการปรับใช้สภาพแวดล้อมการใช้งานจริง
คุณสามารถกําหนดชื่อสาขาเองและเพิ่มสภาพแวดล้อมเพิ่มเติมได้โดยการแก้ไขการแม็ปพื้นที่ทํางานในไฟล์ YAML
Azure DevOps
ปรับใช้ PBIP โดยอัตโนมัติด้วย Azure Pipelines เมื่อโค้ดถูกส่งไปยังสาขาที่กําหนดค่าไว้ ไปป์ไลน์จะปรับใช้กับพื้นที่ทํางานที่เกี่ยวข้องโดยอัตโนมัติ
สร้าง azure-pipelines.yml ในรูทที่เก็บของคุณ:
trigger:
branches:
include:
- dev
- main
variables:
- name: workspace_ids
value: |
{
"dev": "11111111-1111-1111-1111-111111111111",
"main": "22222222-2222-2222-2222-222222222222"
}
- name: environments
value: |
{
"dev": "dev",
"main": "prod"
}
stages:
- stage: Deploy
jobs:
- job: DeployPBIP
pool:
vmImage: 'windows-latest'
steps:
- checkout: self
- task: UsePythonVersion@0
inputs:
versionSpec: '3.12'
addToPath: true
- task: AzureCLI@2
displayName: 'Deploy PBIP to Fabric'
inputs:
azureSubscription: 'your-azure-service-connection'
scriptType: 'ps'
scriptLocation: 'inlineScript'
inlineScript: |
cd "$(Build.SourcesDirectory)"
pip install fabric-cicd
$branch_ref = $env:BUILD_SOURCEBRANCH
$branch_name = $branch_ref -replace '^refs/heads/', ''
$workspace_ids = '$(workspace_ids)' | ConvertFrom-Json
$environments = '$(environments)' | ConvertFrom-Json
$workspace_id = $workspace_ids.$branch_name
$environment = $environments.$branch_name
python -u deploy.py --workspace_id "$workspace_id" --environment "$environment"
if ($LASTEXITCODE -ne 0) {
Write-Error "Deployment failed with exit code: $LASTEXITCODE"
exit $LASTEXITCODE
}
กําหนดค่า Azure DevOps
-
สร้างการเชื่อมต่อบริการ Azure ในการตั้งค่าโครงการ Azure DevOps:
- ไปที่ การเชื่อมต่อบริการการตั้งค่า > โครงการ
- สร้างการเชื่อมต่อบริการ Azure Resource Manager ใหม่โดยใช้ข้อมูลประจําตัวของบริการหลักของคุณ
- สําหรับคําแนะนําโดยละเอียด โปรดดู เชื่อมต่อกับ Microsoft Azure
- อัปเดต
azureSubscriptionค่าใน YAML ให้ตรงกับชื่อการเชื่อมต่อบริการของคุณ
-
อัปเดตรหัสพื้นที่ทํางานใน YAML:
- แก้ไขตัวแปร
workspace_idsใน azure-pipelines.yml - ตั้งค่ารหัสพื้นที่ทํางาน dev และ prod ของคุณ
- ยอมรับและผลักดันการเปลี่ยนแปลงไปยังที่เก็บของคุณ
- แก้ไขตัวแปร
-
สร้างไปป์ไลน์:
- ไปที่ไปป์ไลน์ > ไปป์ไลน์ใหม่
- เลือกที่เก็บของคุณและเลือก "ไฟล์ YAML Azure Pipelines ที่มีอยู่"
- เลือก azure-pipelines.yml
- สําหรับคําแนะนําโดยละเอียด โปรดดู สร้างไปป์ไลน์แรกของคุณ
- บันทึกและเรียกใช้ไปป์ไลน์เพื่อปรับใช้ PBIP ของคุณกับ Fabric
การดําเนินการ GitHub
ปรับใช้ PBIP โดยอัตโนมัติด้วย GitHub Actions เมื่อโค้ดถูกส่งไปยังสาขาที่กําหนดค่าไว้ เวิร์กโฟลว์จะปรับใช้กับพื้นที่ทํางานที่เกี่ยวข้องโดยอัตโนมัติ
สร้าง .github/workflows/deploy.yml ในที่เก็บของคุณ:
name: Deploy PBIP to Fabric
on:
push:
branches: [dev, main]
workflow_dispatch:
jobs:
deploy:
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: '3.12'
- name: Set workspace variables
id: workspace
shell: pwsh
run: |
$branch_name = "${{ github.ref_name }}"
$workspace_ids = @{
"dev" = "11111111-1111-1111-1111-111111111111"
"main" = "22222222-2222-2222-2222-222222222222"
}
$environments = @{
"dev" = "dev"
"main" = "prod"
}
$workspace_id = $workspace_ids[$branch_name]
$environment = $environments[$branch_name]
echo "workspace_id=$workspace_id" >> $env:GITHUB_OUTPUT
echo "environment=$environment" >> $env:GITHUB_OUTPUT
- name: Azure Login
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Deploy PBIP to Fabric
shell: pwsh
run: |
pip install fabric-cicd
python -u deploy.py --workspace_id "${{ steps.workspace.outputs.workspace_id }}" --environment "${{ steps.workspace.outputs.environment }}"
if ($LASTEXITCODE -ne 0) {
Write-Error "Deployment failed with exit code: $LASTEXITCODE"
exit $LASTEXITCODE
}
กําหนดค่าการดําเนินการ GitHub
สร้างข้อมูลลับของข้อมูลประจําตัว Azure:
- รับข้อมูลประจําตัวบริการหลักของคุณในรูปแบบ JSON:
{ "clientId": "<service-principal-client-id>", "clientSecret": "<service-principal-secret>", "subscriptionId": "<azure-subscription-id>", "tenantId": "<azure-tenant-id>" } - ไปที่ GitHub repository Settings > Secrets and variables > Actions
- เพิ่ม
AZURE_CREDENTIALSด้วย JSON ด้านบน
- รับข้อมูลประจําตัวบริการหลักของคุณในรูปแบบ JSON:
อัปเดตรหัสพื้นที่ทํางานในเวิร์กโฟลว์:
- แก้ไข
workspace_idsแฮชเทเบิลในขั้นตอน "ตั้งค่าตัวแปรพื้นที่ทํางาน" ใน.github/workflows/deploy.yml - ตั้งค่ารหัสพื้นที่ทํางาน dev และ prod ของคุณ
- คอมมิตและส่ง YAML เวิร์กโฟลว์ไปยังที่เก็บของคุณ
- แก้ไข