التشغيل السريع: توزيع ملفات Bicep باستخدام GitHub Actions

إجراءات GitHub هي مجموعة من الميزات في GitHub لأتمتة سير عمل تطوير البرامج. في هذا التشغيل السريع، يمكنك استخدام إجراءات GitHub لتوزيع Azure Resource Manager لأتمتة نشر ملف Bicep إلى Azure.

وهو يقدم مقدمة قصيرة لـ GitHub Actions وملفات Bicep. إذا كنت تريد خطوات أكثر تفصيلا حول إعداد إجراءات ومشروع GitHub، فشاهد نشر موارد Azure باستخدام إجراءات Bicep وGitHub.

المتطلبات الأساسية

إنشاء مجموعة الموارد

قم بإنشاء مجموعة موارد. لاحقا في هذا التشغيل السريع، يمكنك نشر ملف 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، ومجموعة الموارد، والاشتراكات. يمكنك استخدام هذه الأسرار في قسم إنشاء سير عمل .

  1. في GitHub، انتقل إلى المستودع.

  2. حدد Settings > Secrets and variables > Actions > New repository secret.

  3. الصق ناتج JSON بالكامل من أمر واجهة سطر الأوامر Azure في حقل قيمة بيانات الدخول السرية. اسم السر AZURE_CREDENTIALS.

  4. إنشاء سر آخر اسمه AZURE_RG. أضف اسم مجموعة الموارد الخاصة بك إلى حقل قيمة البيانات السرية (exampleRG).

  5. إنشاء سر آخر اسمه 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.

لإنشاء سير عمل، قم باتخاذ الخطوات التالية:

  1. من مستودع GitHub، حدد الإجراءات من القائمة العلوية.

  2. حدد سير عمل جديد.

  3. حدد Set up your workflow yourself.

  4. إعادة تسمية ملف سير العمل إذا كنت تفضل اسم مختلف غير main.yml. على سبيل المثال: deployBicepFile.yml.

  5. استبدال محتوى الملف 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 التي تؤدي إلى سير العمل. يتم تشغيل سير العمل عند وجود حدث دفع في الفرع الرئيسي.
  6. حدد Commit changes.

  7. حدد التنفيذ مباشرة بالفرع الرئيسي.

  8. حدد تنفيذ ملف جديد (أو تنفيذ التغييرات).

تحديث ملف سير العمل أو ملف Bicep يؤدي إلى سير العمل. يبدأ سير العمل مباشرة بعد تنفيذ التغييرات.

التحقق من حالة سير العمل

  1. حدد علامة التبويب Actions. ترى إنشاء سير عمل deployBicepFile.yml مدرجا. يستغرق 1-2 دقيقة لتشغيل سير العمل.
  2. حدد سير العمل لفتحه، وتحقق من Status أن هو Success.

تنظيف الموارد

عندما لا تكون هناك حاجة إلى مجموعة الموارد والمستودعات، قم بتنظيف الموارد التي قمت بنشرها عن طريق حذف مجموعة الموارد ومستودع GitHub.

az group delete --name exampleRG

الخطوات التالية