التشغيل السريع: توزيع ملفات Bicep باستخدام GitHub Actions
إجراءات GitHub هي مجموعة من الميزات في GitHub لأتمتة سير عمل تطوير البرامج. في هذا التشغيل السريع، يمكنك استخدام إجراءات GitHub لتوزيع Azure Resource Manager لأتمتة نشر ملف Bicep إلى Azure.
وهو يقدم مقدمة قصيرة لـ GitHub Actions وملفات Bicep. إذا كنت تريد خطوات أكثر تفصيلا حول إعداد إجراءات ومشروع GitHub، فشاهد نشر موارد Azure باستخدام إجراءات Bicep وGitHub.
المتطلبات الأساسية
- حساب Azure مع اشتراك نشط. أنشئ حساباً مجاناً.
- حساب GitHub. في حالة عدم امتلاك حساب، يمكنك التسجيل مجاناً.
- مستودع GitHub لتخزين ملفات Bicep وملفات سير العمل الخاصة بك. لإنشاء مستودع، راجع إنشاء مستودع جديد.
إنشاء مجموعة الموارد
قم بإنشاء مجموعة موارد. لاحقا في هذا التشغيل السريع، يمكنك نشر ملف Bicep الخاص بك إلى مجموعة الموارد هذه.
az group create -n exampleRG -l westus
تعيين بيانات اعتماد النشر
تعمل إجراءات GitHub الخاصة بك تحت هوية. استخدم الأمر az ad sp create-for-rbac لإنشاء كيان الخدمة للهوية. امنح كيان الخدمة دور المساهم لمجموعة الموارد التي تم إنشاؤها في جلسة العمل السابقة بحيث يمكن لإجراء GitHub مع الهوية إنشاء موارد في مجموعة الموارد هذه. يوصى بمنح الحد الأدنى من الوصول المطلوب.
az ad sp create-for-rbac --name {app-name} --role contributor --scopes /subscriptions/{subscription-id}/resourceGroups/exampleRG --json-auth
استبدل العنصر النائب {app-name}
باسم تطبيقك. استبدل {subscription-id}
بمعرّف اشتراكك.
الإخراج هو كائن JSON مع بيانات اعتماد تعيين الدور التي توفر الوصول إلى تطبيق App Service مشابه للإخراج التالي.
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
...
}
انسخ كائن JSON هذا لاحقاً. ستحتاج فقط إلى المقاطع التي تحمل القيم clientId
، وclientSecret
، وsubscriptionId
، وtenantId
. تأكد من عدم وجود فاصلة إضافية في نهاية السطر الأخير، على سبيل المثال، tenantId
السطر في المثال السابق، وإلا ينتج عنه ملف JSON غير صالح. تحصل على خطأ أثناء النشر يقول "فشل تسجيل الدخول مع الخطأ: المحتوى ليس كائن JSON صالحا. تحقق مرة متعددة مما إذا كان "نوع المصادقة" صحيحا."
تكوين بيانات GitHub السرية
إنشاء البيانات السرية لبيانات اعتماد Azure، ومجموعة الموارد، والاشتراكات. يمكنك استخدام هذه الأسرار في قسم إنشاء سير عمل .
في GitHub، انتقل إلى المستودع.
حدد Settings > Secrets and variables > Actions > New repository secret.
الصق ناتج JSON بالكامل من أمر واجهة سطر الأوامر Azure في حقل قيمة بيانات الدخول السرية. اسم السر
AZURE_CREDENTIALS
.إنشاء سر آخر اسمه
AZURE_RG
. أضف اسم مجموعة الموارد الخاصة بك إلى حقل قيمة البيانات السرية (exampleRG
).إنشاء سر آخر اسمه
AZURE_SUBSCRIPTION
. أضف معرف الاشتراك إلى حقل قيمة السر (مثال:aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
).
إضافة ملف Bicep
أضف ملف Bicep إلى مستودع GitHub. ينشئ الملف Bicep التالي حساب تخزين:
@minLength(3)
@maxLength(11)
param storagePrefix string
@allowed([
'Standard_LRS'
'Standard_GRS'
'Standard_RAGRS'
'Standard_ZRS'
'Premium_LRS'
'Premium_ZRS'
'Standard_GZRS'
'Standard_RAGZRS'
])
param storageSKU string = 'Standard_LRS'
param location string = resourceGroup().location
var uniqueStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'
resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: uniqueStorageName
location: location
sku: {
name: storageSKU
}
kind: 'StorageV2'
properties: {
supportsHttpsTrafficOnly: true
}
}
output storageEndpoint object = stg.properties.primaryEndpoints
يتطلب ملف Bicep معلمة واحدة تسمى storagePrefix بأحرف من 3 إلى 11.
يمكنك وضع الملف في أي مكان في المستودع. يفترض نموذج سير العمل في المقطع التالي أن ملف Bicep يسمى main.bicep، ويتم تخزينه في جذر المستودع.
إنشاء سير عمل
يحدد سير العمل الخطوات التي يجب تنفيذها عند بدء التشغيل. إنه ملف YAML (.yml) في مسار .github/workflows/ لمستودعك. يمكن أن يكون ملحق ملف سير العمل إما .yml أو .yaml.
لإنشاء سير عمل، قم باتخاذ الخطوات التالية:
من مستودع GitHub، حدد الإجراءات من القائمة العلوية.
حدد سير عمل جديد.
حدد Set up your workflow yourself.
إعادة تسمية ملف سير العمل إذا كنت تفضل اسم مختلف غير main.yml. على سبيل المثال: deployBicepFile.yml.
استبدال محتوى الملف yml مع التعليمات البرمجية التالية:
name: Deploy Bicep file on: [push] jobs: build-and-deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@main - name: Log into Azure uses: azure/login@v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }} - name: Deploy Bicep file uses: azure/arm-deploy@v1 with: subscriptionId: ${{ secrets.AZURE_SUBSCRIPTION }} resourceGroupName: ${{ secrets.AZURE_RG }} template: ./main.bicep parameters: 'storagePrefix=mystore storageSKU=Standard_LRS' failOnStdErr: false
استبدل
mystore
بسابقة اسم حساب التخزين لديك.إشعار
يمكنك تحديد ملف معلمات تنسيق JSON بدلا من ذلك في الإجراء نشر ARM (مثال:
.azuredeploy.parameters.json
).يتضمن المقطع الأول من ملف سير العمل:
- الاسم: اسم الجهاز الظاهري في Azure.
- تشغيل: اسم الأحداث GitHub التي تؤدي إلى سير العمل. يتم تشغيل سير العمل عند وجود حدث دفع في الفرع الرئيسي.
حدد Commit changes.
حدد التنفيذ مباشرة بالفرع الرئيسي.
حدد تنفيذ ملف جديد (أو تنفيذ التغييرات).
تحديث ملف سير العمل أو ملف Bicep يؤدي إلى سير العمل. يبدأ سير العمل مباشرة بعد تنفيذ التغييرات.
التحقق من حالة سير العمل
- حدد علامة التبويب Actions. ترى إنشاء سير عمل deployBicepFile.yml مدرجا. يستغرق 1-2 دقيقة لتشغيل سير العمل.
- حدد سير العمل لفتحه، وتحقق من
Status
أن هوSuccess
.
تنظيف الموارد
عندما لا تكون هناك حاجة إلى مجموعة الموارد والمستودعات، قم بتنظيف الموارد التي قمت بنشرها عن طريق حذف مجموعة الموارد ومستودع GitHub.
az group delete --name exampleRG