استيراد ملفات التكوين من مستودع GitHub إلى متجر App Configuration

إذا كنت قد اعتمدت التكوين كتعليق برمجي وقمت بإدارة التكوينات الخاصة بك في GitHub، يمكنك استخدام إجراءات GitHub لاستيراد ملفات التكوين تلقائيا من مستودع GitHub الخاص بك إلى متجر App Configuration. يسمح لك هذا بإجراء تغييرات على ملفات التكوين الخاصة بك كما تفعل عادة، أثناء الحصول على مزايا متجر App Configuration مثل:

  • تكوين مركزي خارج التعليمات البرمجية الخاصة بك.
  • تحديث التكوين دون إعادة نشر التطبيق بأكمله.
  • التكامل مع خدمات مثل Azure App Service و Functions.

يحدد سير عمل GitHub Action عملية تلقائية في مستودع GitHub. لاستيراد ملف تكوين من مستودع GitHub إلى مخزن Azure App Configuration، استخدم إجراء Azure CLI GitHub، الذي يوفر إمكانات كاملة لاستيراد الملفات إلى متجر App Configuration.

المصادقة

لاستيراد التكوينات إلى مخزن Azure App Configuration، يمكنك المصادقة باستخدام إحدى الطرق التالية:

استخدام معرف Microsoft Entra

الطريقة الموصى بها للمصادقة هي باستخدام معرف Microsoft Entra، والذي يسمح لك بالاتصال بأمان بموارد Azure الخاصة بك. يمكنك أتمتة عملية المصادقة باستخدام إجراء Azure Login GitHub.

يسمح لك تسجيل الدخول إلى Azure بالمصادقة باستخدام أساسيات الخدمة مع الأسرار أو OpenID Connect باستخدام بيانات اعتماد الهوية الموحدة. في هذا المثال، ستستخدم OpenID Connect لتسجيل الدخول إلى متجر App Configuration.

استخدام تسجيل الدخول إلى Azure مع OpenID Connect

لاستخدام تسجيل الدخول إلى Azure مع OpenID Connect، ستحتاج إلى:

  1. إعداد تطبيق Microsoft Entra مع كيان خدمة.
  2. قم بتعيين تطبيق Microsoft Entra الخاص بك دور مالك بيانات تكوين التطبيق للسماح لإجراء GitHub الخاص بك بالقراءة والكتابة إلى متجر App Configuration.
  3. قم بتوفير معرف العميل ومعرف المستأجر ومعرف الاشتراك لتطبيق Microsoft Entra لإجراء تسجيل الدخول. يمكن توفير هذه القيم مباشرة في سير العمل أو تخزينها كأسرار GitHub للحصول على أمان أفضل. في المثال أدناه، يتم تعيين هذه القيم كأسرار. لمزيد من المعلومات حول استخدام الأسرار في GitHub، راجع استخدام الأسرار في إجراءات GitHub.

لبدء استخدام GitHub Actions هذا، انتقل إلى المستودع وحدد علامة التبويب Actions. حدد New workflow، ثم قم بإعداد سير عمل بنفسك. وأخيرا، ابحث في السوق عن "Azure Login". بمجرد العثور عليه، انقر فوق الإجراء وانسخ القصاصة البرمجية المتوفرة في ملف سير العمل.

تحديد علامة التبويب Action

حدد إجراء تسجيل الدخول إلى Azure

مثال باستخدام معرف Microsoft Entra

# Set permissions for the workflow. Specify 'id-token: write' to allow OIDC token generation at the workflow level.
permissions: 
  id-token: write
  contents: read
 
jobs: 
  syncconfig: 
    runs-on: ubuntu-latest 
    steps: 
      - name: Azure login
        uses: azure/login@v2
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

استخدام سلسلة اتصال

بدلا من ذلك، يمكنك المصادقة عن طريق تمرير سلسلة الاتصال مباشرة إلى أمر Azure CLI. يتضمن هذا الأسلوب استرداد سلسلة الاتصال من مدخل Microsoft Azure واستخدامه في الأوامر أو البرامج النصية.

للبدء، يمكنك العثور على سلسلة الاتصال ضمن Access Settings لمتجر App Configuration في مدخل Microsoft Azure.

بعد ذلك، قم بتعيين هذا سلسلة الاتصال كمتغير سري في مستودع GitHub الخاص بك. لمزيد من المعلومات حول استخدام الأسرار في GitHub، راجع استخدام الأسرار في إجراءات GitHub.

مثال على استخدام سلسلة الاتصال

on: 
  push: 
    branches: 
      - 'main' 
    paths: 
      - 'appsettings.json'
 
jobs: 
  syncconfig: 
    runs-on: ubuntu-latest
    
    # pass the secret variable as an environment variable to access it in your CLI action.
    env:
      CONNECTION_STRING: ${{ secrets.<ConnectionString> }}

استيراد ملف التكوين

يمكنك استخدام إجراء Azure CLI GitHub لاستيراد ملف تكوين إلى متجر App Configuration. لبدء استخدام GitHub Actions هذا، انتقل إلى المستودع وحدد علامة التبويب Actions. حدد New workflow، ثم قم بإعداد سير عمل بنفسك. وأخيرا، ابحث في السوق عن "Azure CLI Action". بمجرد العثور عليه، انقر فوق الإجراء وانسخ القصاصة البرمجية المتوفرة في ملف سير العمل.

حدد إجراء Azure CLI

في المثال التالي، يمكنك استخدام إجراء Azure CLI لاستيراد ملفات التكوين إلى مخزن Azure App Configuration عند دفع تغيير إلى appsettings.json. عندما يدفع مطور تغييرا إلى appsettings.json، يقوم البرنامج النصي الذي تم تمريره إلى إجراء Azure CLI بتحديث مخزن App Configuration بالقيم الجديدة.

يحدد القسم on من سير العمل هذا أن الإجراء يتم تشغيله على دفعة appsettings.json تحتوي على الفرع الرئيسي. يسرد قسم المهام المهام التي يتم تشغيلها بمجرد تشغيل الإجراء. يتحقق الإجراء من الملفات ذات الصلة ويحدث متجر App Configuration.

on: 
  push: 
    branches: 
      - 'main' 
    paths: 
      - 'appsettings.json'

# Set permissions for the workflow. Specify 'id-token: write' to allow OIDC token generation at the workflow level.
permissions: 
  id-token: write
  contents: read

jobs: 
  syncconfig: 
    runs-on: ubuntu-latest 
    steps: 
      - name: Azure login
        uses: azure/login@v2
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

      # checkout done so that files in the repo can be read by the sync 
      - uses: actions/checkout@v1 
      - uses: azure/cli@v2
        with: 
          azcliversion: latest
          inlineScript: |
            az appconfig kv import --endpoint <your-app-configuration-store-endpoint> --auth-mode login -s file --path appsettings.json --format json --yes

لمزيد من المعلومات حول أوامر استيراد Azure App Configuration CLI، راجع وثائق Azure AppConfifguration CLI.

استخدام تسمية ديناميكية عند الاستيراد

يعد استخدام تسمية ديناميكية على كل استيراد طريقة جيدة للحفاظ على تحكم واضح ودقيق في الإصدار من التكوينات الخاصة بك. يسمح بتحديد كل استيراد إلى متجر App Configuration بشكل فريد، مما يسهل تعيين تغييرات التعليمات البرمجية إلى تحديثات التكوين.

مثال على استخدام تسمية ديناميكية عند الاستيراد

في المثال التالي، سيكون لكافة قيم المفاتيح المستوردة تسمية فريدة استنادا إلى تجزئة التثبيت.

 jobs: 
  syncconfig: 
    runs-on: ubuntu-latest 
    steps:      
      # Creates a label based on the branch name and the first 8 characters          
      # of the commit hash 
      - id: determine_label 
        run: echo ::set-output name=LABEL::"${GITHUB_REF#refs/*/}/${GITHUB_SHA:0:8}" 
      # checkout done so that files in the repo can be read by the sync 
      - uses: actions/checkout@v1 
      - uses: azure/cli@v2
        with: 
          azcliversion: latest
          inlineScript: |
            az appconfig kv import --endpoint <your-app-configuration-store-endpoint> --auth-mode login -s file --path appsettings.json --format json --label ${{ steps.determine_label.outputs.LABEL }} --yes

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

لمعرفة كيفية استخدام أوامر استيراد CLI، راجع دليلنا الشامل أوامر استيراد Azure CLI.

لمعرفة المزيد حول ملفات تعريف محتوى الملفات المختلفة، راجع دعم تكوين تطبيق Azure لملفات التكوين.