مشاركة عبر


النشر إلى Azure Container Apps باستخدام GitHub Actions

تسمح لك Azure Container Apps باستخدام GitHub Actions لنشر المراجعات إلى تطبيق الحاوية. عند دفع التثبيتات إلى مستودع GitHub الخاص بك، يتم تشغيل سير عمل يقوم بتحديث صورة الحاوية في سجل الحاوية. تنشئ Azure Container Apps مراجعة جديدة استنادا إلى صورة الحاوية المحدثة.

تؤدي التغييرات في مستودع GitHub إلى إجراء لإنشاء مراجعة جديدة.

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

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

إجراء GitHub لتطبيقات حاوية Azure

لإنشاء تطبيق الحاوية azure/container-apps-deploy-action ونشره، يمكنك إضافة الإجراء إلى سير عمل إجراءات GitHub.

يدعم الإجراء السيناريوهات التالية:

  • إنشاء من Dockerfile ونشره في Container Apps
  • قم بالبناء من التعليمات البرمجية المصدر بدون Dockerfile ونشره في Container Apps. تتضمن اللغات المدعومة .NET وJava Node.js وPHP وPython
  • نشر صورة حاوية موجودة إلى Container Apps

أمثلة الاستخدام

فيما يلي بعض السيناريوهات الشائعة لاستخدام الإجراء. لمزيد من المعلومات، راجع صفحة GitHub Marketplace للإجراء.

إنشاء تطبيقات الحاوية ونشرها

توضح القصاصة البرمجية التالية كيفية إنشاء صورة حاوية من التعليمات البرمجية المصدر ونشرها في Container Apps.

steps:

  - name: Log in to Azure
    uses: azure/login@v1
    with:
      creds: ${{ secrets.AZURE_CREDENTIALS }}

  - name: Build and deploy Container App
    uses: azure/container-apps-deploy-action@v1
    with:
      appSourcePath: ${{ github.workspace }}/src
      acrName: myregistry
      containerAppName: my-container-app
      resourceGroup: my-rg

يستخدم الإجراء Dockerfile في appSourcePath لإنشاء صورة الحاوية. إذا لم يتم العثور على Dockerfile، يحاول الإجراء إنشاء صورة الحاوية من التعليمات البرمجية المصدر في appSourcePath.

نشر صورة حاوية موجودة إلى Container Apps

توضح القصاصة البرمجية التالية كيفية نشر صورة حاوية موجودة إلى Container Apps.

steps:

  - name: Log in to Azure
    uses: azure/login@v1
    with:
      creds: ${{ secrets.AZURE_CREDENTIALS }}

  - name: Build and deploy Container App
    uses: azure/container-apps-deploy-action@v1
    with:
      acrName: myregistry
      containerAppName: my-container-app
      resourceGroup: my-rg
      imageToDeploy: myregistry.azurecr.io/app:${{ github.sha }}

هام

إذا كنت تقوم بإنشاء صورة حاوية في خطوة منفصلة، فتأكد من استخدام علامة فريدة مثل SHA الالتزام بدلا من علامة مستقرة مثل latest. لمزيد من المعلومات، راجع أفضل ممارسات علامة الصورة.

المصادقة باستخدام Azure Container Registry

يحتاج إجراء Azure Container Apps إلى المصادقة مع Azure Container Registry لدفع صورة الحاوية. يحتاج تطبيق الحاوية أيضا إلى المصادقة مع Azure Container Registry لسحب صورة الحاوية.

لدفع الصور، يصادق الإجراء تلقائيا مع سجل الحاوية المحدد في acrName استخدام بيانات الاعتماد المقدمة azure/login إلى الإجراء.

لسحب الصور، تستخدم Azure Container Apps إما الهوية المدارة (مستحسن) أو بيانات اعتماد المسؤول للمصادقة مع Azure Container Registry. لاستخدام الهوية المدارة، يجب تكوين تطبيق الحاوية الذي يقوم الإجراء بنشره لاستخدام الهوية المدارة. للمصادقة باستخدام بيانات اعتماد مسؤول السجل، قم بتعيين الإجراء acrUsername والمدخلات acrPassword .

التكوين

يمكنك اتخاذ الخطوات التالية لتكوين سير عمل GitHub Actions للنشر إلى Azure Container Apps.

  • إنشاء مستودع GitHub لتطبيقك
  • إنشاء تطبيق حاوية مع تمكين الهوية المدارة
  • AcrPull تعيين دور Azure Container Registry إلى الهوية المدارة لتطبيق الحاوية
  • تكوين الأسرار في مستودع GitHub الخاص بك
  • إنشاء سير عمل إجراءات GitHub

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

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

إنشاء مستودع GitHub واستنساخ التعليمات البرمجية المصدر

قبل إنشاء سير العمل، يجب أن تكون التعليمات البرمجية المصدر لتطبيقك في مستودع GitHub.

  1. سجل الدخول إلى Azure باستخدام Azure CLI.

    az login
    
  2. بعد ذلك، قم بتثبيت أحدث ملحق Azure Container Apps ل CLI.

    az extension add --name containerapp --upgrade
    
  3. إذا لم يكن لديك مستودع GitHub الخاص بك، فنشئ مستودعا من عينة.

    1. انتقل إلى الموقع التالي لإنشاء مستودع جديد:
    2. قم بتسمية المستودع my-container-appالخاص بك .
  4. استنساخ المستودع إلى جهازك المحلي.

    git clone https://github.com/<YOUR_GITHUB_ACCOUNT_NAME>/my-container-app.git
    

إنشاء تطبيق حاوية مع تمكين الهوية المدارة

إنشاء تطبيق الحاوية az containerapp up باستخدام الأمر في الخطوات التالية. ينشئ هذا الأمر موارد Azure، وينشئ صورة الحاوية، ويخزن الصورة في سجل، وينشر في تطبيق حاوية.

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

  1. قم بالتغيير إلى مجلد src للمستودع المستنسخ.

    cd my-container-app
    cd src
    
  2. إنشاء موارد Azure ونشر تطبيق حاوية باستخدام az containerapp up الأمر .

    az containerapp up \
      --name my-container-app \
      --source . \
      --ingress external 
    
  3. في إخراج الأمر، لاحظ اسم Azure Container Registry.

  4. احصل على معرف المورد الكامل لسجل الحاوية.

    az acr show --name <ACR_NAME> --query id --output tsv
    

    استبدل <ACR_NAME> باسم سجلك.

  5. تمكين الهوية المدارة لتطبيق الحاوية.

    az containerapp identity assign \
      --name my-container-app \
      --resource-group my-container-app-rg \
      --system-assigned
    

    لاحظ المعرف الأساسي للهوية المدارة في إخراج الأمر.

  6. AcrPull تعيين دور Azure Container Registry إلى الهوية المدارة لتطبيق الحاوية.

    az role assignment create \
      --assignee <MANAGED_IDENTITY_PRINCIPAL_ID> \
      --role AcrPull \
      --scope <ACR_RESOURCE_ID>
    

    استبدل <MANAGED_IDENTITY_PRINCIPAL_ID> بالمعرف الأساسي للهوية المدارة ومعرف <ACR_RESOURCE_ID> المورد الخاص ب Azure Container Registry.

  7. تكوين تطبيق الحاوية لاستخدام الهوية المدارة لسحب الصور من Azure Container Registry.

    az containerapp registry set \
      --name my-container-app \
      --resource-group my-container-app-rg \
      --server <ACR_NAME>.azurecr.io \
      --identity system
    

    استبدل <ACR_NAME> باسم Azure Container Registry.

تكوين الأسرار في مستودع GitHub الخاص بك

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

  1. إنشاء كيان خدمة مع دور المساهم في مجموعة الموارد التي تحتوي على تطبيق الحاوية وسجل الحاوية.

    az ad sp create-for-rbac \
      --name my-app-credentials \
      --role contributor \
      --scopes /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/my-container-app-rg \
      --json-auth \
      --output json
    

    استبدل <SUBSCRIPTION_ID> بمعرف اشتراك Azure الخاص بك. إذا كان سجل الحاوية الخاص بك في مجموعة موارد مختلفة، فحدد مجموعتي الموارد في المعلمة --scopes .

  2. انسخ إخراج JSON من الأمر .

  3. في مستودع GitHub، انتقل إلى Settings>Secrets>Actions وحدد New repository secret.

  4. أدخل AZURE_CREDENTIALS كاسم والصق محتويات إخراج JSON كقيمة.

  5. حدد ⁧⁩Add secret⁧⁩.

إنشاء سير عمل إجراءات GitHub

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

  2. حدد Set up a workflow yourself.

  3. الصق YAML التالي في المحرر.

    name: Azure Container Apps Deploy
    
    on:
      push:
        branches:
          - main
    
    jobs:
      build:
        runs-on: ubuntu-latest
    
        steps:
          - uses: actions/checkout@v3
    
          - name: Log in to Azure
            uses: azure/login@v1
            with:
              creds: ${{ secrets.AZURE_CREDENTIALS }}
    
          - name: Build and deploy Container App
            uses: azure/container-apps-deploy-action@v1
            with:
              appSourcePath: ${{ github.workspace }}/src
              acrName: <ACR_NAME>
              containerAppName: my-container-app
              resourceGroup: my-container-app-rg
    

    استبدل <ACR_NAME> باسم Azure Container Registry. تأكد من أن اسم الفرع ضمن branches وقيم ل ، containerAppNameو، ومطابقة resourceGroup قيم المستودع appSourcePathوموارد Azure.

  4. قم بتثبيت التغييرات على الفرع الرئيسي .

يجب أن يبدأ تشغيل سير عمل GitHub Actions في إنشاء تطبيق الحاوية ونشره. للتحقق من تقدمه، انتقل إلى Actions.

لنشر مراجعة جديدة لتطبيقك، ادفع تثبيتا جديدا إلى الفرع الرئيسي .