نشر حاوية مخصصة إلى خدمة التطبيق باستخدام GitHub Actions

تمنحك إجراءات GitHub المرونة لإنشاء سير عمل تلقائي لتطوير البرامج. باستخدام إجراء Azure Web Deploy، يمكنك أتمتة سير العمل الخاص بك لنشر حاويات مخصصة إلى App Service باستخدام GitHub Actions.

يتم تحديد سير العمل بواسطة ملف YAML (.yml) في المسار /.github/workflows/ بمستودعك. يحتوي هذا التعريف على الخطوات والمعلمات المختلفة الموجودة في سير العمل.

بالنسبة لسير عمل حاوية Azure App Service، يحتوي الملف على ثلاثة أقسام:

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

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

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

الطريقة المُوصى بها للمصادقة باستخدام Azure App Services لـ GitHub Actions هي من خلال ملف تعريف التوزيع. يمكنك أيضًا المصادقة باستخدام كيان الخدمة أو Open ID Connect ولكن العملية تتطلب المزيد من الخطوات.

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

ملف تعريف النشر هو بيانات اعتماد على مستوى التطبيق. يمكنك إعداد ملف تعريف النشر الخاص بك كبيانات سرية من GitHub.

  1. انتقل إلى خدمة التطبيق الخاص بك في مدخل Microsoft Azure.

  2. في صفحة Overview، حدد Get Publish profile.

    إشعار

    اعتبارا من أكتوبر 2020، ستحتاج تطبيقات الويب Linux إلى تعيين إعداد WEBSITE_WEBDEPLOY_USE_SCM التطبيق إلى true قبل تنزيل الملف. ستتم إزالة هذا الطلب في المستقبل. راجع تكوين تطبيق App Service في مدخل Microsoft Azure، لمعرفة كيفية تكوين إعدادات تطبيق الويب الشائعة.

  3. احفظ الملف الذي تم تنزيله. ستستخدم محتويات الملف لإنشاء بيانات سرية من GitHub.

تكوين بيانات سرية لـ GitHub بغرض المصادقة

في GitHub، تصفح المستودع الخاص بك. حدد Settings > Security > Secrets and variables > Actions > New repository secret.

لاستخدام بيانات الاعتماد على مستوى التطبيق، الصق محتويات ملف تعريف النشر الذي تم تنزيله في حقل قيمة البيانات السرية. اسم السر AZURE_WEBAPP_PUBLISH_PROFILE.

عند تكوين سير عمل GitHub الخاص بك، يمكنك استخدام AZURE_WEBAPP_PUBLISH_PROFILE في إجراء نشر Azure Web App. على سبيل المثال:

- uses: azure/webapps-deploy@v2
  with:
    publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}

تكوين أسرار GitHub للسجل الخاص بك

تعريف الأسرار لاستخدامها مع إجراء تسجيل الدخول إلى Docker. يستخدم المثال في هذا المستند Azure Container Registry لسجل الحاوية.

  1. انتقل إلى الحاوية في مدخل Microsoft Azure أو Docker وانسخ اسم المستخدم وكلمة المرور. يمكنك العثور على اسم مستخدم Azure Container Registry وكلمة المرور في مدخل Microsoft Azure ضمن Settings>Access keys لسجلك.

  2. تعريف سر جديد لاسم مستخدم التسجيل المسمى REGISTRY_USERNAME.

  3. تعريف سر جديد لكلمة مرور السجل المسماة REGISTRY_PASSWORD.

إنشاء صورة الحاوية.

يوضح المثال التالي جزءًا من سير العمل الذي ينشئ صورة Node.JS Docker. استخدم Docker Login لتسجيل الدخول إلى سجل حاوية خاص. يستخدم هذا المثال Azure Container Registry ولكن نفس الإجراء يعمل مع السجلات الأخرى.

name: Linux Container Node Workflow

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - uses: azure/docker-login@v1
      with:
        login-server: mycontainer.azurecr.io
        username: ${{ secrets.REGISTRY_USERNAME }}
        password: ${{ secrets.REGISTRY_PASSWORD }}
    - run: |
        docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
        docker push mycontainer.azurecr.io/myapp:${{ github.sha }}     

يمكنك أيضا استخدام تسجيل الدخول إلى Docker لتسجيل الدخول إلى سجلات حاويات متعددة في نفس الوقت. يتضمن هذا المثال اثنين من أسرار GitHub الجديدة للمصادقة مع docker.io. يفترض المثال أن هناك Dockerfile على المستوى الجذر للسجل.

name: Linux Container Node Workflow

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - uses: azure/docker-login@v1
      with:
        login-server: mycontainer.azurecr.io
        username: ${{ secrets.REGISTRY_USERNAME }}
        password: ${{ secrets.REGISTRY_PASSWORD }}
    - uses: azure/docker-login@v1
      with:
        login-server: index.docker.io
        username: ${{ secrets.DOCKERIO_USERNAME }}
        password: ${{ secrets.DOCKERIO_PASSWORD }}
    - run: |
        docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
        docker push mycontainer.azurecr.io/myapp:${{ github.sha }}     

النشر إلى حاوية App Service

لنشر صورتك في حاوية مخصصة في App Service، استخدم الإجراء azure/webapps-deploy@v2. يحتوي هذا الإجراء على سبع معلمات:

المعلمة‬ الشرح
app-name (مطلوب) اسم تطبيق App Service
ملف تعريف النشر (اختياري) ينطبق على تطبيقات الويب (Windows وLinux) وحاويات تطبيق الويب (linux). سيناريو الحاويات المتعددة غير مدعوم. نشر محتويات ملف التعريف (*.publishsettings) باستخدام بيانات نشر ويب سرية
اسم المنفذ (اختياري) أدخل فتحة موجودة بخلاف فتحة الإنتاج
الحزمة (اختياري) ينطبق على Web App فقط: المسار إلى الحزمة أو المجلد. *.zip أو *.war أو *.jar أو مجلد لنشره
images (مطلوب) ينطبق على حاويات Web App فقط: حدد اسم (صور) صورة الحاوية المؤهلة بالكامل. على سبيل المثال، "myregistry.azurecr.io/nginx:latest" أو "python:3.7.2-alpine/". بالنسبة لتطبيق متعدد الحاويات، يمكن توفير أسماء صور حاوية متعددة (مفصولة بخطوط متعددة)
configuration-file (اختياري) ينطبق على حاويات Web App فقط: مسار ملف Docker-Compose. يجب أن يكون مسار مؤهل بالكامل أو نسبة إلى دليل العمل الافتراضي. مطلوب للتطبيقات متعددة الحاويات.
startup-command (اختياري) أدخل أمر بدء التشغيل. على سبيل المثال، تشغيل dotnet أو dotnet filename.dll
name: Linux Container Node Workflow

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2

    - uses: azure/docker-login@v1
      with:
        login-server: mycontainer.azurecr.io
        username: ${{ secrets.REGISTRY_USERNAME }}
        password: ${{ secrets.REGISTRY_PASSWORD }}

    - run: |
        docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
        docker push mycontainer.azurecr.io/myapp:${{ github.sha }}     

    - uses: azure/webapps-deploy@v2
      with:
        app-name: 'myapp'
        publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
        images: 'mycontainer.azurecr.io/myapp:${{ github.sha }}'

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

يمكنك العثور على مجموعتنا من الإجراءات المجمعة في مستودعات مختلفة على GitHub، كل منها يحتوي على وثائق وأمثلة لمساعدتك على استخدام GitHub لـ CI/CD ونشر تطبيقاتك في Azure.