หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
ในบทช่วยสอนนี้ คุณใช้ไปป์ไลน์ Azure DevOps ที่ใช้ประโยชน์จาก API ข้อกําหนดรายการนําเข้าจํานวนมาก เพื่อปรับใช้รายการจากโฟลเดอร์ Git โฟลเดอร์ Git ประกอบด้วยข้อกําหนดรายการจากพื้นที่ทํางาน สําหรับนักพัฒนา ที่เชื่อมต่อกับ Git และไปป์ไลน์จะปรับใช้กับพื้นที่ทํางาน ทดสอบ ที่ไม่ได้เชื่อมต่อกับ Git
คุณสามารถแนบแผนการปรับใช้กับคําขอ Bulk Import Item Definitions ได้ตามต้องการ สําหรับรูปแบบคําขอและข้อกําหนด ดูที่ อัตโนมัติการปรับใช้ด้วยแผนการปรับใช้
ข้อกำหนดเบื้องต้น
- Azure DevOps โครงการ Azure และที่เก็บ + สิทธิ์ในการกําหนดค่าไปป์ไลน์ Azure DevOps และสร้างกลุ่มตัวแปร
- ชื่อพื้นที่ทํางานแฟบริค:
bulk-tutorial-test- พื้นที่ทํางานเป้าหมายสําหรับการปรับใช้ - บริการหลัก (SPN) - การลงทะเบียนแอป Entra ID (Azure AD) ที่มีข้อมูลลับของไคลเอ็นต์ จําเป็นต้องมีรหัสไคลเอ็นต์ ข้อมูลลับของไคลเอ็นต์ และรหัสผู้เช่า
- บริการหลักมีสิทธิ์ ผู้สนับสนุน สําหรับ
bulk-tutorial-testพื้นที่ทํางาน Fabric - การตั้งค่าผู้ดูแลระบบ Fabric สําหรับ Service Principal - ผู้ดูแลระบบ Fabric ต้องเปิดใช้งาน "Service principals สามารถใช้ Fabric APIs ได้" ภายใต้การตั้งค่าGovern>Configurations> ของ Tenant ในแคตตาล็อก> OneLake
💡 เคล็ดลับ:เพื่อเปิดใช้งานการเข้าถึง Service Principal ใน Fabric ผู้ดูแลระบบ Fabric ต้องเปิดใช้งาน "Service principals สามารถใช้ Fabric APIs ได้" ภายใต้การตั้งค่าTenant ของ Catalog Govern>Configurations> ของ OneLake>
ฉากหลัง
ในการปรับใช้ตาม Git โดยใช้สภาพแวดล้อมการสร้าง การปรับใช้ทั่วทั้งพื้นที่ทํางาน Fabric มาจากที่เก็บ Git ส่วนกลาง ถือว่าข้อกําหนดรายการ Fabric เป็นโค้ดและเลื่อนระดับผ่านโฟลว์การนําออกใช้ที่มีโครงสร้าง สภาพแวดล้อมทั้งหมด - Dev, Test และ Prod - สอดคล้องกับสาขาหลักเดียวกัน ในขณะที่แต่ละขั้นตอนจะถูกปรับใช้อย่างอิสระโดยใช้ไปป์ไลน์การสร้างและรีลีสเฉพาะ
โดยทั่วไปไปป์ไลน์จะเริ่มต้นด้วยการส่งออกข้อกําหนดรายการ Fabric จากพื้นที่ทํางานการพัฒนาโดยใช้การรวม Fabric Git คําจํากัดความเหล่านี้สามารถตรวจสอบได้ในสภาพแวดล้อมการสร้างผ่านการตรวจสอบอัตโนมัติ (ไม่ครอบคลุมในบทช่วยสอนนี้)
ในระหว่างการปรับใช้ ไปป์ไลน์จะเรียกใช้ API การนําเข้าจํานวนมากเพื่อเลื่อนระดับข้อกําหนดรายการที่ได้รับอนุมัติไปยังพื้นที่ทํางานเป้าหมาย API รองรับทั้งการสร้างรายการใหม่และการอัปเดตรายการที่มีอยู่ ในขณะที่อาศัยการจัดการการขึ้นต่อกันในตัวของ Fabric เพื่อให้แน่ใจว่ามีการปรับใช้รายการในลําดับที่ถูกต้อง สิ่งนี้ช่วยให้สามารถปรับใช้ได้อย่างสม่ําเสมอและทําซ้ําได้ในสภาพแวดล้อมการทดสอบและการผลิตโดยไม่ต้องมีการแทรกแซงด้วยตนเอง
ขั้นตอนที่ 1 เตรียมตัวอย่าง repo
- ดาวน์โหลดไฟล์ zip bulk-api-demo-zip ไปยังเครื่องในเครื่องของคุณ
- ซิปตัวอย่างประกอบด้วย:
- ไฟล์ไปป์ไลน์ Azure DevOps (
deploy-using-bulk-api.yml) - พื้นที่ทํางานตัวอย่างที่มีไฟล์คําจํากัดความรายการ Fabric ไม่กี่ไฟล์ (
bulk-tutorial-dev)
- ไฟล์ไปป์ไลน์ Azure DevOps (
- โคลนที่เก็บ Azure DevOps ของคุณไปยังเครื่องภายในเครื่องของคุณ และคลายซิปไฟล์ไปยังโฟลเดอร์นี้
- พุชเนื้อหาใหม่ไปยังที่เก็บ Azure DevOps
ขั้นตอนที่ 2 เรียกใช้ไปป์ไลน์ Azure DevOps
2.1 กลุ่มตัวแปร: bulkapi-group
กลุ่มตัวแปรนี้จัดเก็บรายละเอียดบริการหลักที่ไปป์ไลน์ Azure รับรองความถูกต้องด้วย
ขั้นตอนในการสร้าง
- ไปที่ไป ป์ไลน์→ไลบรารี ในโปรเจ็กต์ ADO ของคุณ
- เลือก + กลุ่มตัวแปร
- ตั้งชื่อ:
bulkapi-group - เพิ่มตัวแปรต่อไปนี้:
| ชื่อตัวแปร | คำอธิบาย |
|---|---|
AZURE_TENANT_ID |
บริการหลัก - รหัสผู้เช่า |
AZURE_CLIENT_ID |
บริการหลัก - รหัสไคลเอ็นต์ |
AZURE_CLIENT_SECRET |
บริการหลัก - ข้อมูลลับของไคลเอ็นต์ (ทําเครื่องหมายเป็นข้อมูลลับ) |
2.2 การตั้งค่าไปป์ไลน์ Azure DevOps
สร้างไปป์ไลน์ใน Azure DevOps ที่อ้างอิงไฟล์ YAML deploy-using-bulk-api.yml ในที่เก็บของคุณ
ขั้นตอน
- ไปที่ ไปป์ไลน์ → ไปป์ไลน์→ ไปป์ไลน์ใหม่
- เลือก Azure Repos Git และเลือกที่เก็บของคุณ
- เลือกไฟล์ YAML ไปป์ไลน์ Azure ที่มีอยู่
- เปลี่ยน pool ตามพูลเอเจนต์ที่มีอยู่ ตัวอย่างเช่น ใช้เอเจนต์ Microsoft-Hosted (ที่ใช้ Linux):
vmImage: ubuntu-latest - วิ่ง
- หลังจากไปป์ไลน์เสร็จสมบูรณ์ พื้นที่ทํางาน
bulk-tutorial-testFabric ประกอบด้วยรายการที่ปรับใช้
Tip
ครั้งแรกที่ไปป์ไลน์ทํางาน ADO อาจแจ้งให้คุณอนุญาตการเข้าถึงกลุ่มตัวแปรและสภาพแวดล้อม ผู้ดูแลระบบ ADO สามารถให้สิทธิ์ล่วงหน้าได้ภายใต้การตั้งค่า→ไปป์ไลน์
Tip
ไปป์ไลน์นี้สาธิตการปรับใช้กับสภาพแวดล้อมการทดสอบ การปรับใช้การผลิตสามารถทําตามโฟลว์ที่คล้ายกัน โดยมีการเพิ่มประตูการอนุมัติหลังจากการตรวจสอบความถูกต้องสําเร็จในสภาพแวดล้อมการทดสอบ
3. เจาะลึกโค้ด: ADO Pipeline YAML
File:deploy-using-bulk-api.yml — อยู่ในที่เก็บ Azure DevOps
ไปป์ไลน์ประกอบด้วยสามขั้นตอน โดยแต่ละขั้นตอนจะดําเนินการที่แตกต่างกัน ด้านล่างนี้คือแต่ละขั้นตอนพร้อมคําอธิบายประกอบ
3.1 ทริกเกอร์และการกําหนดค่าไปป์ไลน์
กําหนดเวลาที่ไปป์ไลน์ทํางานและกําหนดค่าพูลตัวแทนและตัวแปร
trigger:
branches:
include:
- main
pool:
vmImage: ubuntu-latest
variables:
- group: bulkapi-group
- name: test_workspace_to_deploy
value: "bulk-tutorial-test"
| ฉาก | Purpose |
|---|---|
trigger |
เรียกใช้ไปป์ไลน์ทุกครั้งที่กดไปยัง main สาขา |
pool |
ใช้ตัวแทน Ubuntu ที่โฮสต์โดย Microsoft |
variables.group |
อ้างอิง bulkapi-group กลุ่มตัวแปรที่มีข้อมูลประจําตัว SPN |
test_workspace_to_deploy |
ชื่อที่แสดงพื้นที่ทํางานเป้าหมาย |
3.2 ขั้นตอนที่ 1 — ตรวจสอบสิทธิ์ด้วย Fabric API
รับโทเค็นผู้ถือจาก Microsoft Entra ID โดยใช้ข้อมูลประจําตัวของบริการหลัก
stages:
- stage: Deploy_Test
jobs:
- job: Deploy
displayName: 'Deploy using Bulk-API'
steps:
- checkout: self
- script: |
TOKEN=$(curl -s -X POST \
"https://login.microsoftonline.com/$(AZURE_TENANT_ID)/oauth2/v2.0/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "client_id=$(AZURE_CLIENT_ID)&client_secret=$(AZURE_CLIENT_SECRET)&scope=https://api.fabric.microsoft.com/.default&grant_type=client_credentials" \
| jq -r '.access_token')
echo "##vso[task.setvariable variable=FABRIC_TOKEN;issecret=true]$TOKEN"
displayName: 'Get Fabric API token'
อินพุต: ข้อมูลประจําตัว SPN จากกลุ่มตัวแปร (AZURE_TENANT_ID, AZURE_CLIENT_ID, ) AZURE_CLIENT_SECRET
เอาท์พุต:FABRIC_TOKEN — โทเค็นผู้ถือที่จัดเก็บเป็นตัวแปรไปป์ไลน์ลับ ซึ่งใช้โดยขั้นตอนต่อๆ ไป
API ที่เรียก:POST https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token
3.3 ขั้นตอนที่ 2 — สร้างเพย์โหลดและเรียกใช้ Bulk Import API
ขั้นตอนนี้ดําเนินการสามอย่าง: แก้ไขรหัสพื้นที่ทํางาน สร้างเพย์โหลดคําขอจากไฟล์ภายในเครื่อง และเรียกใช้ API การนําเข้าจํานวนมาก
3.3.1 แก้ไขรหัสพื้นที่ทํางาน
ค้นหารหัสพื้นที่ทํางานเป้าหมายตามชื่อที่แสดงโดยใช้ Fabric REST API
WORKSPACE_ID=$(curl -s -H "Authorization: Bearer $(FABRIC_TOKEN)" \
"https://api.fabric.microsoft.com/v1/workspaces" \
| jq -r '.value[] | select(.displayName=="'"$(test_workspace_to_deploy)"'") | .id')
if [ -z "$WORKSPACE_ID" ] || [ "$WORKSPACE_ID" = "null" ]; then
echo "##vso[task.logissue type=error]Workspace '$(test_workspace_to_deploy)' not found"
exit 1
fi
echo "Workspace ID: $WORKSPACE_ID"
อินพุต:FABRIC_TOKEN, test_workspace_to_deploy (ชื่อพื้นที่ทํางาน)
เอาท์พุต:WORKSPACE_ID — GUID ของพื้นที่ทํางานเป้าหมาย
API ที่เรียก:GET https://api.fabric.microsoft.com/v1/workspaces
3.3.2 สร้างเนื้อหาคําขอที่เข้ารหัส base64
ทําซ้ําแต่ละไฟล์ในโฟลเดอร์ต้นทาง เข้ารหัสเนื้อหาใน Base64 และประกอบเนื้อหาคําขอ JSON
BASE_DIR="$(Build.SourcesDirectory)/bulk-tutorial-dev"
PARTS_JSON="[]"
while IFS= read -r -d '' FILE; do
REL_PATH="/${FILE#$BASE_DIR/}"
PAYLOAD=$(base64 -w 0 "$FILE" 2>/dev/null || base64 "$FILE")
PARTS_JSON=$(echo "$PARTS_JSON" | jq \
--arg path "$REL_PATH" \
--arg payload "$PAYLOAD" \
'. + [{path: $path, payload: $payload, payloadType: "InlineBase64"}]')
done < <(find "$BASE_DIR" -type f -print0)
REQUEST_BODY=$(jq -n \
--argjson parts "$PARTS_JSON" \
'{
definitionParts: $parts,
options: {
allowPairingByName: false
}
}')
echo "Request body built with $(echo "$PARTS_JSON" | jq length) parts"
อินพุต: ไฟล์ในเครื่องใน bulk-tutorial-dev โฟลเดอร์
เอาท์พุต:REQUEST_BODY — เพย์โหลด JSON ที่มีส่วนคําจํากัดความรายการทั้งหมด, เข้ารหัส base64
ตัวเลือกที่สําคัญ:allowPairingByName: false — รายการจะจับคู่ด้วย ID ตรรกะ (จาก .platform ไฟล์) ไม่ใช่ตามชื่อที่แสดง
3.3.3 เรียกใช้ API การนําเข้าจํานวนมาก
ส่งเพย์โหลดไปยัง API การนําเข้าจํานวนมากและบันทึกรหัสการดําเนินการสําหรับการสํารวจ
API_URL="https://api.fabric.microsoft.com/v1/workspaces/$WORKSPACE_ID/items/bulkImportDefinitions"
echo "Calling Bulk Import Item definition API: $API_URL"
HEADER_FILE=$(mktemp)
RESPONSE=$(curl -s -w "\n%{http_code}" -X POST \
"$API_URL" \
-H "Authorization: Bearer $(FABRIC_TOKEN)" \
-H "Content-Type: application/json" \
-D "$HEADER_FILE" \
-d "$REQUEST_BODY")
HTTP_CODE=$(echo "$RESPONSE" | tail -1)
BODY=$(echo "$RESPONSE" | sed '$d')
echo "HTTP Status: $HTTP_CODE"
echo "$BODY" | jq . 2>/dev/null || echo "$BODY"
OPERATION_ID=$(grep -i '^x-ms-operation-id:' "$HEADER_FILE" | awk '{print $2}' | tr -d '\r\n ')
echo "Operation ID: $OPERATION_ID"
rm -f "$HEADER_FILE"
echo "##vso[task.setvariable variable=OPERATION_ID]$OPERATION_ID"
if [ "$HTTP_CODE" -ge 400 ]; then
echo "##vso[task.logissue type=error]Bulk import failed with HTTP $HTTP_CODE"
exit 1
fi
อินพุต:FABRIC_TOKEN, WORKSPACE_ID, REQUEST_BODY
เอาท์พุต:OPERATION_ID — ตัวระบุการดําเนินการที่ทํางานเป็นเวลานาน ซึ่งจัดเก็บเป็นตัวแปรไปป์ไลน์
API ที่เรียก:POST https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/items/bulkImportDefinitions
การจัดการการตอบสนอง:
-
200 OK— การปรับใช้เสร็จสมบูรณ์พร้อมกัน (ผลลัพธ์ในเนื้อหา) -
202 Accepted— การปรับใช้เป็นแบบอะซิงโครนัส โพลโดยใช้OPERATION_ID -
4xx— การปรับใช้ล้มเหลว รายละเอียดข้อผิดพลาดในเนื้อหาการตอบกลับ
3.4 ขั้นตอนที่ 3 — สํารวจความคิดเห็นสําหรับการปรับใช้ให้เสร็จสมบูรณ์
สํารวจตําแหน่งข้อมูลการดําเนินการที่ใช้งานเป็นเวลานานจนกว่าการปรับใช้จะเสร็จสมบูรณ์และผลลัพธ์จะพร้อมใช้งาน
- script: |
echo "Polling operation: $(OPERATION_ID)"
while true; do
RESULT=$(curl -s -H "Authorization: Bearer $(FABRIC_TOKEN)" \
"https://api.fabric.microsoft.com/v1/operations/$(OPERATION_ID)/result")
HAS_DETAILS=$(echo "$RESULT" | jq \
'has("importItemDefinitionsDetails") and (.importItemDefinitionsDetails != null)')
if [ "$HAS_DETAILS" = "true" ]; then
echo "Operation complete. Result:"
echo "$RESULT" | jq .
break
fi
echo "Operation not yet completed. Waiting 10 seconds..."
sleep 10
done
displayName: 'Poll LRO until complete'
อินพุต:FABRIC_TOKEN, OPERATION_ID
เอาท์พุต: JSON ผลลัพธ์การปรับใช้ที่มีสถานะต่อรายการ
API ที่เรียก:GET https://api.fabric.microsoft.com/v1/operations/{operationId}/result
โครงสร้างผลลัพธ์: การตอบกลับประกอบด้วย importItemDefinitionsDetails — อาร์เรย์ที่มีผลลัพธ์ต่อรายการ:
{
"importItemDefinitionsDetails": [
{
"itemId": "c4dd0eac-...",
"itemDisplayName": "MyReport",
"itemType": "Report",
"itemLogicalId": "88436e65-...",
"operationType": "Create",
"operationStatus": "Succeeded"
}
]
}
| ฟิลด์ | คำอธิบาย |
|---|---|
itemId |
รหัสรายการพื้นที่ทํางาน (GUID) ของรายการที่ปรับใช้ |
itemDisplayName |
ชื่อที่แสดงของรายการ |
itemType |
ชนิดรายการ Fabric (ตัวอย่างเช่น Report, , SemanticModel) Notebook |
itemLogicalId |
รหัสตรรกะจาก .platform ไฟล์ |
operationType |
Create สําหรับรายการ Update ใหม่ สําหรับรายการที่มีอยู่ |
operationStatus |
Succeeded หรือ Failed |
4. สรุป
บทช่วยสอนนี้สาธิตวิธีใช้ API คําจํากัดความรายการนําเข้าจํานวนมาก เป็นกลไกการปรับใช้ แสดงวิธีปรับใช้รายการจากพื้นที่ทํางานสําหรับนักพัฒนาที่เชื่อมต่อกับที่เก็บ Git โดยการแยกเนื้อหาที่เก็บ แปลงเป็นอินพุต API ที่จําเป็น และปรับใช้กับพื้นที่ทํางาน Fabric ทดสอบที่ไม่ได้เชื่อมต่อกับ Git
การดําเนินการ API ที่ใช้
| ขั้นตอน | API | Purpose |
|---|---|---|
| รับรอง | POST login.microsoftonline.com/.../oauth2/v2.0/token |
รับโทเค็นผู้ถือโดยใช้ข้อมูลประจําตัว SPN |
| แก้ไขพื้นที่ทํางาน | GET api.fabric.microsoft.com/v1/workspaces |
ค้นหารหัสพื้นที่ทํางานตามชื่อที่แสดง |
| ปรับใช้รายการ | POST api.fabric.microsoft.com/v1/workspaces/{id}/items/bulkImportDefinitions |
นําเข้าคําจํากัดความรายการทั้งหมดในการเรียกครั้งเดียว |
| ผลการสํารวจความคิดเห็น | GET api.fabric.microsoft.com/v1/operations/{id}/result |
รอให้การปรับใช้แบบอะซิงโครนัสเสร็จสมบูรณ์ |