النشر إلى Azure Container Apps باستخدام GitHub Actions
تسمح لك Azure Container Apps باستخدام GitHub Actions لنشر المراجعات إلى تطبيق الحاوية. عند دفع التثبيتات إلى مستودع GitHub الخاص بك، يتم تشغيل سير عمل يقوم بتحديث صورة الحاوية في سجل الحاوية. تنشئ Azure Container Apps مراجعة جديدة استنادا إلى صورة الحاوية المحدثة.
يتم تشغيل سير عمل 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.
سجل الدخول إلى Azure باستخدام Azure CLI.
az login
بعد ذلك، قم بتثبيت أحدث ملحق Azure Container Apps ل CLI.
az extension add --name containerapp --upgrade
إذا لم يكن لديك مستودع GitHub الخاص بك، فنشئ مستودعا من عينة.
- انتقل إلى الموقع التالي لإنشاء مستودع جديد:
- قم بتسمية المستودع
my-container-app
الخاص بك .
استنساخ المستودع إلى جهازك المحلي.
git clone https://github.com/<YOUR_GITHUB_ACCOUNT_NAME>/my-container-app.git
إنشاء تطبيق حاوية مع تمكين الهوية المدارة
إنشاء تطبيق الحاوية az containerapp up
باستخدام الأمر في الخطوات التالية. ينشئ هذا الأمر موارد Azure، وينشئ صورة الحاوية، ويخزن الصورة في سجل، وينشر في تطبيق حاوية.
بعد إنشاء التطبيق الخاص بك، يمكنك إضافة هوية مدارة إلى التطبيق وتعيين الهوية AcrPull
الدور للسماح للهوية بسحب الصور من السجل.
قم بالتغيير إلى مجلد src للمستودع المستنسخ.
cd my-container-app cd src
إنشاء موارد Azure ونشر تطبيق حاوية باستخدام
az containerapp up
الأمر .az containerapp up \ --name my-container-app \ --source . \ --ingress external
في إخراج الأمر، لاحظ اسم Azure Container Registry.
احصل على معرف المورد الكامل لسجل الحاوية.
az acr show --name <ACR_NAME> --query id --output tsv
استبدل
<ACR_NAME>
باسم سجلك.تمكين الهوية المدارة لتطبيق الحاوية.
az containerapp identity assign \ --name my-container-app \ --resource-group my-container-app-rg \ --system-assigned
لاحظ المعرف الأساسي للهوية المدارة في إخراج الأمر.
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.تكوين تطبيق الحاوية لاستخدام الهوية المدارة لسحب الصور من 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. يحتوي السر على بيانات الاعتماد الخاصة بكيان خدمة مع دور المساهم في مجموعة الموارد التي تحتوي على تطبيق الحاوية وسجل الحاوية.
إنشاء كيان خدمة مع دور المساهم في مجموعة الموارد التي تحتوي على تطبيق الحاوية وسجل الحاوية.
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
.انسخ إخراج JSON من الأمر .
في مستودع GitHub، انتقل إلى Settings>Secrets>Actions وحدد New repository secret.
أدخل
AZURE_CREDENTIALS
كاسم والصق محتويات إخراج JSON كقيمة.حدد Add secret.
إنشاء سير عمل إجراءات GitHub
في مستودع GitHub، انتقل إلى Actions وحدد New workflow.
حدد Set up a workflow yourself.
الصق 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.قم بتثبيت التغييرات على الفرع الرئيسي .
يجب أن يبدأ تشغيل سير عمل GitHub Actions في إنشاء تطبيق الحاوية ونشره. للتحقق من تقدمه، انتقل إلى Actions.
لنشر مراجعة جديدة لتطبيقك، ادفع تثبيتا جديدا إلى الفرع الرئيسي .