التسليم المستمر باستخدام GitHub Actions

يمكنك استخدام سير عمل GitHub Actions لتعريف سير عمل لإنشاء التعليمات البرمجية ونشرها تلقائيا إلى تطبيق الوظائف في Azure Functions.

يتم الاحتفاظ بملف YAML (.yml) الذي يحدد تكوين سير العمل في /.github/workflows/ المسار في المستودع الخاص بك. يحتوي هذا التعريف على الإجراءات والمعلمات التي تشكل سير العمل، وهو خاص بلغة تطوير وظائفك. يقوم سير عمل GitHub Actions ل Functions بتنفيذ المهام التالية، بغض النظر عن اللغة:

  1. إعداد البيئة.
  2. إنشاء مشروع التعليمات البرمجية.
  3. نشر الحزمة إلى تطبيق دالة في Azure.

يعالج إجراء Azure Functions التوزيع إلى تطبيق دالة موجود في Azure.

يمكنك إنشاء ملف تكوين سير عمل للتوزيع يدويا. يمكنك أيضا إنشاء الملف من مجموعة من القوالب الخاصة باللغة بإحدى الطرق التالية:

  • في مدخل Microsoft Azure
  • استخدام Azure CLI
  • من مستودع GitHub الخاص بك

إذا كنت لا تريد إنشاء ملف YAML يدويا، فحدد أسلوبا مختلفا في أعلى المقالة.

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

  • حساب Azure مع اشتراك نشط. أنشئ حساباً مجاناً.

  • حساب GitHub. في حالة عدم امتلاك حساب، يمكنك التسجيل مجاناً.

  • تطبيق وظيفة عمل مستضاف على Azure مع التعليمات البرمجية المصدر في مستودع GitHub.

  • Azure CLI، عند التطوير محليا. يمكنك أيضا استخدام Azure CLI في Azure Cloud Shell.

تعيين بيانات اعتماد النشر

نظرا لأن GitHub Actions تستخدم ملف تعريف النشر الخاص بك للوصول إلى تطبيق الوظائف أثناء النشر، فأنت بحاجة أولا إلى الحصول على ملف تعريف النشر وتخزينه بشكل آمن كسر GitHub.

هام

ملف تعريف النشر هو بيانات اعتماد قيمة تسمح بالوصول إلى موارد Azure. تأكد دائما من نقله وتخزينه بشكل آمن. في GitHub، يجب تخزين ملف تعريف النشر فقط في أسرار GitHub.

قم بتنزيل ملفك الشخصي للنشر

لتنزيل ملف تعريف النشر لتطبيق الوظائف الخاص بك:

  1. حدد صفحة "نظرة عامة" على تطبيق الوظائف، ثم حدد "الحصول على ملف تعريف النشر".

    تنزيل ملف تعريف النشر

  2. قم بحفظ محتويات الملف ونسخها.

أضف سر GitHub

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

  2. انتقل إلى الإعدادات.

  3. حدد Secrets and variables > Actions.

  4. حدد سر مستودع جديد.

  5. أضف بيانات سرية جديدة بالاسم AZURE_FUNCTIONAPP_PUBLISH_PROFILE والقيمة المعينة إلى محتويات ملف تعريف النشر.

  6. حدد ⁧⁩Add secret⁧⁩.

يمكن GitHub الآن المصادقة على تطبيق الوظائف في Azure.

إنشاء سير العمل من قالب

أفضل طريقة لإنشاء تكوين سير عمل يدويا هي البدء من القالب المدعوم رسميا.

  1. اختر إما Windows أو Linux للتأكد من حصولك على القالب لنظام التشغيل الصحيح.

    تستخدم runs-on: windows-latestعمليات التوزيع في Windows .

  2. انسخ القالب الخاص باللغة من مستودع إجراءات Azure Functions باستخدام الارتباط التالي:

  3. تحديث المعلمة env.AZURE_FUNCTIONAPP_NAME باسم مورد تطبيق الوظائف في Azure. قد تحتاج اختياريا إلى تحديث المعلمة التي تعين إصدار اللغة الذي يستخدمه تطبيقك، مثل DOTNET_VERSION C#‎.

  4. أضف ملف YAML الجديد هذا في /.github/workflows/ المسار في المستودع الخاص بك.

إنشاء تكوين سير العمل في المدخل

عند استخدام المدخل لتمكين إجراءات GitHub، تنشئ الدالات ملف سير عمل استنادا إلى مكدس التطبيق الخاص بك وتلتزم به في مستودع GitHub الخاص بك في الدليل الصحيح.

يحصل المدخل تلقائيا على ملف تعريف النشر الخاص بك ويضيفه إلى أسرار GitHub لمستودعك.

أثناء إنشاء تطبيق الوظائف

يمكنك البدء بسرعة باستخدام GitHub Actions من خلال علامة التبويب Deployment عند إنشاء دالة في مدخل Microsoft Azure. لإضافة سير عمل GitHub Actions عند إنشاء تطبيق وظائف جديد:

  1. في مدخل Microsoft Azure، حدد Deployment في تدفق Create Function App.

    لقطة شاشة لخيار النشر في قائمة Functions.

  2. قم بتمكين النشر المستمر إذا كنت تريد أن يقوم كل تحديث للتعليمات البرمجية بتشغيل دفع التعليمات البرمجية إلى مدخل Microsoft Azure.

  3. أدخل مؤسسة GitHub ومستودعك وفرعك.

    لقطة شاشة توضح تفاصيل حساب مستخدم GitHub.

  4. أكمل تكوين تطبيق الوظائف. يتضمن مستودع GitHub الآن ملف سير عمل جديدا في /.github/workflows/.

لتطبيق دالة موجود

لإضافة سير عمل GitHub Actions إلى تطبيق وظائف موجود:

  1. انتقل إلى تطبيق الوظائف في مدخل Microsoft Azure وحدد Deployment Center.

  2. بالنسبة للمصدر، حدد GitHub. إذا لم تشاهد الرسالة الافتراضية Building with GitHub Actions، فحدد Change provider اختر GitHub Actions وحدد OK.

  3. إذا لم تكن قد أذنت بالفعل بوصول GitHub، فحدد Authorize. قم بتوفير بيانات اعتماد GitHub وحدد تسجيل الدخول. لتخويل حساب GitHub مختلف، حدد تغيير الحساب وسجل الدخول باستخدام حساب آخر.

  4. حدد مؤسسة GitHub والمستودع والفرع. للنشر باستخدام GitHub Actions، يجب أن يكون لديك حق الوصول للكتابة إلى هذا المستودع.

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

  6. حدد معاينة الملف لمشاهدة ملف سير العمل الذي تتم إضافته إلى مستودع GitHub في github/workflows/.

  7. حدد حفظ لإضافة ملف سير العمل إلى المستودع الخاص بك.

إضافة تكوين سير العمل إلى المستودع الخاص بك

يمكنك استخدام az functionapp deployment github-actions add الأمر لإنشاء ملف تكوين سير عمل من القالب الصحيح لتطبيق الوظائف. ثم يتم تخزين ملف YAML الجديد في الموقع الصحيح (/.github/workflows/) في مستودع GitHub الذي توفره، بينما تتم إضافة ملف ملف تعريف النشر لتطبيقك إلى أسرار GitHub في نفس المستودع.

  1. شغل هذا az functionapp الأمر، واستبدل القيم githubUser/githubRepoو MyResourceGroupو:MyFunctionapp

    az functionapp deployment github-actions add --repo "githubUser/githubRepo" -g MyResourceGroup -n MyFunctionapp --login-with-github
    

    يستخدم هذا الأمر أسلوبا تفاعليا لاسترداد رمز مميز للوصول الشخصي لحساب GitHub الخاص بك.

  2. في نافذة المحطة الطرفية، يجب أن ترى شيئا مثل الرسالة التالية:

    Please navigate to https://github.com/login/device and enter the user code XXXX-XXXX to activate and retrieve your GitHub personal access token.
    
  3. انسخ التعليمات البرمجية الفريدة XXXX-XXXX ، واستعرض للوصول إلى https://github.com/login/device، وأدخل الرمز الذي نسخته. بعد إدخال التعليمات البرمجية الخاصة بك، يجب أن ترى شيئا مثل الرسالة التالية:

    Verified GitHub repo and branch
    Getting workflow template using runtime: java
    Filling workflow template with name: func-app-123, branch: main, version: 8, slot: production, build_path: .
    Adding publish profile to GitHub
    Fetching publish profile with secrets for the app 'func-app-123'
    Creating new workflow file: .github/workflows/master_func-app-123.yml
    
  4. انتقل إلى مستودع GitHub وحدد Actions. تحقق من تشغيل سير العمل الخاص بك.

إنشاء ملف تكوين سير العمل

يمكنك إنشاء ملف تكوين سير عمل GitHub Actions من قوالب Azure Functions مباشرة من مستودع GitHub الخاص بك.

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

  2. حدد الإجراءات وسير العمل الجديد.

  3. ابحث عن الوظائف.

    لقطة شاشة للبحث عن قوالب وظائف GitHub Actions.

  4. في مهام سير عمل تطبيق الوظائف المعروضة التي تم تأليفها بواسطة Microsoft Azure، ابحث عن تلك التي تطابق لغة التعليمات البرمجية وحدد تكوين.

  5. في ملف YAML الذي تم إنشاؤه حديثا، قم بتحديث المعلمة env.AZURE_FUNCTIONAPP_NAME باسم مورد تطبيق الوظائف في Azure. قد تحتاج اختياريا إلى تحديث المعلمة التي تعين إصدار اللغة الذي يستخدمه تطبيقك، مثل DOTNET_VERSION C#‎.

  6. تحقق من حفظ ملف سير العمل الجديد في /.github/workflows/ وحدد Commit changes....

تحديث تكوين سير عمل

إذا كنت بحاجة إلى تحديث تكوين سير عمل موجود أو تغييره لسبب ما، فما عليك سوى الانتقال إلى /.github/workflows/ الموقع في المستودع الخاص بك، وفتح ملف YAML المحدد، وإجراء أي تغييرات مطلوبة، ثم تثبيت التحديثات في المستودع.

مثال: ملف تكوين سير العمل

يستخدم مثال القالب التالي الإصدار 1 من functions-action و publish profile للمصادقة. يعتمد القالب على اللغة التي اخترتها ونظام التشغيل الذي يتم نشر تطبيق الوظائف عليه:

إذا كان تطبيق الوظائف يعمل على Linux، فحدد Linux.

name: Deploy DotNet project to Azure Function App

on:
  [push]

env:
  AZURE_FUNCTIONAPP_NAME: 'your-app-name'   # set this to your function app name on Azure
  AZURE_FUNCTIONAPP_PACKAGE_PATH: '.'       # set this to the path to your function app project, defaults to the repository root
  DOTNET_VERSION: '6.0.x'                   # set this to the dotnet version to use (e.g. '2.1.x', '3.1.x', '5.0.x')

jobs:
  build-and-deploy:
    runs-on: windows-latest
    environment: dev
    steps:
    - name: 'Checkout GitHub Action'
      uses: actions/checkout@v3

    - name: Setup DotNet ${{ env.DOTNET_VERSION }} Environment
      uses: actions/setup-dotnet@v3
      with:
        dotnet-version: ${{ env.DOTNET_VERSION }}

    - name: 'Resolve Project Dependencies Using Dotnet'
      shell: pwsh
      run: |
        pushd './${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}'
        dotnet build --configuration Release --output ./output
        popd

    - name: 'Run Azure Functions Action'
      uses: Azure/functions-action@v1
      id: fa
      with:
        app-name: ${{ env.AZURE_FUNCTIONAPP_NAME }}
        package: '${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}/output'
        publish-profile: ${{ secrets.AZURE_FUNCTIONAPP_PUBLISH_PROFILE }}

إجراء Azure Functions

يحدد إجراء Azure Functions (Azure/azure-functions) كيفية نشر التعليمات البرمجية الخاصة بك إلى تطبيق وظائف موجود في Azure، أو إلى فتحة معينة في تطبيقك.

المعلمات

المعلمات التالية هي الأكثر شيوعا مع هذا الإجراء:

المعلمة‬ الشرح
app-name (إلزامي) اسم تطبيق الوظائف.
اسم المنفذ (اختياري) اسم فتحة توزيع معينة تريد النشر إليها. يجب أن تكون الفتحة موجودة بالفعل في تطبيق الوظائف. عند عدم التحديد، يتم نشر التعليمات البرمجية إلى الفتحة النشطة.
ملف تعريف النشر (اختياري) اسم سر GitHub الذي يحتوي على ملف تعريف النشر الخاص بك.

المعلمات التالية مدعومة أيضا، ولكن يتم استخدامها فقط في حالات محددة:

المعلمة‬ الشرح
الحزمة (اختياري) تعيين مسار فرعي في المستودع الخاص بك للنشر منه. بشكل افتراضي، يتم تعيين هذه القيمة إلى .، مما يعني نشر جميع الملفات والمجلدات في مستودع GitHub.
respect-pom-xml (اختياري) يستخدم فقط لوظائف Java. ما إذا كان مطلوبا ليتم اشتقاق البيانات الاصطناعية لتوزيع التطبيق الخاص بك من ملف pom.xml. عند نشر تطبيقات وظائف Java، يجب تعيين هذه المعلمة إلى true وتعيين package إلى .. بشكل افتراضي، يتم تعيين هذه المعلمة إلى false، ما يعني أن المعلمة package يجب أن تشير إلى موقع البيانات الاصطناعية للتطبيق، مثل ./target/azure-functions/
احترام funcignore (اختياري) ما إذا كانت إجراءات GitHub تحترم ملف .funcignore لاستبعاد الملفات والمجلدات المحددة فيه. قم بتعيين هذه القيمة إلى true عندما يحتوي المستودع الخاص بك على ملف .funcignore وتريد استخدامه لاستبعاد المسارات والملفات، مثل تكوينات محرر النص أو .vscode/أو بيئة Python الظاهرية (.venv/). الإعداد الافتراضي هو false.
scm-do-build-during-deployment (اختياري) ما إذا كان موقع نشر App Service (Kudu) ينفذ عمليات النشر المسبق. يمكن العثور على موقع النشر لتطبيق الوظائف الخاص بك في https://<APP_NAME>.scm.azurewebsites.net/. قم بتغيير هذا الإعداد إلى true عندما تحتاج إلى التحكم في عمليات النشر في Kudu بدلا من حل التبعيات في سير عمل GitHub Actions. القيمة الافتراضية هي false. لمزيد من المعلومات، راجع إعداد SCM_DO_BUILD_DURING_DEPLOYMENT .
تمكين-oryx-build (اختياري) ما إذا كان موقع توزيع Kudu يحل تبعيات المشروع باستخدام Oryx. اضبط على true عندما تريد استخدام Oryx لحل تبعيات المشروع باستخدام بنية بعيدة بدلا من سير عمل إجراءات GitHub. عند true، يجب عليك أيضا تعيين scm-do-build-during-deployment إلى true. القيمة الافتراضية هي false.

الاعتبارات

ضع الاعتبارات التالية في الاعتبار عند استخدام إجراء Azure Functions:

  • عند استخدام إجراءات GitHub، يتم نشر التعليمات البرمجية إلى تطبيق الوظائف الخاص بك باستخدام توزيع Zip لوظائف Azure.

  • يتم تخزين بيانات الاعتماد المطلوبة من قبل GitHub للاتصال ب Azure للنشر كأسرار في مستودع GitHub الخاص بك ويتم الوصول إليها في النشر ك secrets.<SECRET_NAME>.

  • أسهل طريقة لإجراءات GitHub للمصادقة مع Azure Functions للتوزيع هي باستخدام ملف تعريف نشر. يمكنك أيضا المصادقة باستخدام كيان الخدمة. لمعرفة المزيد، راجع مستودع GitHub Actions هذا.

  • يتم إنشاء إجراءات إعداد البيئة وتشغيل بنية من القوالب، وهي خاصة باللغة.

  • تستخدم env القوالب العناصر لتعريف الإعدادات الفريدة للبناء والنشر.

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