حساب GitHub. في حالة عدم امتلاك حساب، يمكنك التسجيل مجاناً.
إعداد نشر إجراءات GitHub عند إنشاء التطبيق
يتم دمج نشر GitHub Actions في معالج إنشاء التطبيق الافتراضي. تحتاج فقط إلى تعيين النشر المستمر إلى تمكين في علامة التبويب Deployment وتكوين المؤسسة والمستودع والفرع الذي تريده.
عند تمكين النشر المستمر، يختار معالج إنشاء التطبيق تلقائيا أسلوب المصادقة استنادا إلى تحديد المصادقة الأساسي ويقوم بتكوين تطبيقك ومستودع GitHub وفقا لذلك:
بالنسبة لتطبيق موجود، يمكنك البدء بسرعة باستخدام GitHub Actions باستخدام App Service Deployment Center. تقوم طريقة تسليم المفتاح هذه تلقائيا بإنشاء ملف سير عمل GitHub Actions استنادا إلى مكدس التطبيق الخاص بك وتثبيته في مستودع GitHub الخاص بك.
يتيح لك مركز النشر أيضا تكوين مصادقة OpenID Connect الأكثر أمانا بسهولة باستخدام خيار الهوية المعينة من قبل المستخدم.
إذا كان حساب Azure الخاص بك لديه الأذونات المطلوبة، يمكنك تحديد لإنشاء هوية معينة من قبل المستخدم. وإلا، يمكنك تحديد هوية مدارة معينة من قبل المستخدم موجودة في القائمة المنسدلة Identity . يمكنك العمل مع مسؤول Azure لإنشاء هوية مدارة معينة من قبل المستخدم مع دور المساهم في موقع الويب.
الطريقة الموصى بها للمصادقة مع Azure App Services ل GitHub Actions هي مع OpenID Connect. هذه طريقة مصادقة تستخدم رموزا مميزة قصيرة الأجل. يعد إعداد OpenID Connect باستخدام GitHub Actions أكثر تعقيدا ولكنه يوفر أمانا مشددا.
بدلا من ذلك، يمكنك المصادقة باستخدام هوية مدارة معينة من قبل المستخدم أو كيان خدمة أو ملف تعريف نشر.
يقوم أدناه بتشغيلك من خلال خطوات إنشاء تطبيق دليل نشط، ومدير الخدمة، وبيانات الاعتماد الموحدة باستخدام عبارات Azure CLI. لمعرفة كيفية إنشاء تطبيق دليل نشط، ومدير الخدمة، وبيانات الاعتماد الموحدة في مدخل Microsoft Azure، راجع اتصال GitHub وAzure.
يقوم هذا الأمر بإخراج JSON مع appId الذي هو الخاص بك client-id. احفظ القيمة لاستخدامها كـ AZURE_CLIENT_ID سر GitHub لاحقًا.
ستستخدم قيمة objectId عند إنشاء بيانات اعتماد اتحادية مع واجهة برمجة تطبيقات الرسم البياني Graph API والإشارة إليها باسم APPLICATION-OBJECT-ID.
إنشاء كيان الخدمة. استبدل $appID مع التطبيق من مخرج JSON خاصتك.
يولد هذا الأمر خرج JSON باستخدام objectId مختلف وسيتم استخدامه في الخطوة التالية. objectId الجديد هو assignee-object-id.
انسخ العبارة المراد appOwnerTenantId استخدامها كسر GitHub لوقت AZURE_TENANT_ID لاحق.
az ad sp create --id $appId
إنشاء تعيين دور جديد عن طريق الاشتراك و العنصر. بشكل افتراضي، يرتبط تعيين الدور باشتراكك الافتراضي. استبدل $subscriptionId بمعرف اشتراكك، $resourceGroupName واسم مجموعة الموارد، $webappName واسم تطبيق الويب الخاص بك، و $assigneeObjectId باسم الذي تم idإنشاؤه . تعرف على طريقة إدارة اشتراكات Azure باستخدام واجهة سطر الأوامر Azure.
az role assignment create --role contributor --subscription $subscriptionId --assignee-object-id $assigneeObjectId --scope /subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Web/sites/$webappName --assignee-principal-type ServicePrincipal
استبدل APPLICATION-OBJECT-ID ب appId (الذي تم إنشاؤه أثناء إنشاء التطبيق) لتطبيق Active Directory الخاص بك.
قم بتعيين قيمة للرجوع CREDENTIAL-NAME إليها لاحقاً.
تعيين subject. يتم تعريف قيمته بواسطة GitHub اعتمادا على سير العمل الخاص بك:
الوظائف في بيئة إجراءات GitHub خاصتك: repo:< Organization/Repository >:environment:< Name >
بالنسبة للوظائف غير المرتبطة ببيئة، قم بتضمين مسار ref للفرع/العلامة استنادا إلى مسار ref المستخدم لتشغيل سير العمل: repo:< Organization/Repository >:ref:< ref path>. على سبيل المثال: repo:n-username/ node_express:ref:refs/heads/my-branch أو repo:n-username/ node_express:ref:refs/tags/my-tag.
بالنسبة إلى مهام سير العمل التي تم تشغيلها بواسطة حدث طلب سحب: repo:< Organization/Repository >:pull_request.
az ad app federated-credential create --id <APPLICATION-OBJECT-ID> --parameters credential.json
("credential.json" contains the following content)
{
"name": "<CREDENTIAL-NAME>",
"issuer": "https://token.actions.githubusercontent.com",
"subject": "repo:organization/repository:ref:refs/heads/main",
"description": "Testing",
"audiences": [
"api://AzureADTokenExchange"
]
}
ملف تعريف النشر هو بيانات اعتماد على مستوى التطبيق. يمكنك إعداد ملف تعريف النشر الخاص بك كبيانات سرية من GitHub.
انتقل إلى خدمة التطبيق الخاص بك في مدخل Microsoft Azure.
في صفحة Overview، حدد Get Publish profile.
احفظ الملف الذي تم تنزيله. ستستخدم محتويات الملف لإنشاء بيانات سرية من GitHub.
إشعار
اعتبارا من أكتوبر 2020، تحتاج تطبيقات الويب Linux إلى تعيين إعداد WEBSITE_WEBDEPLOY_USE_SCM التطبيق إلى trueقبل تنزيل ملف تعريف النشر. ستتم إزالة هذا الطلب في المستقبل.
az ad sp create-for-rbac --name "myApp" --role contributor \
--scopes /subscriptions/<subscription-id>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name> \
--json-auth
في المثال السابق، استبدل العناصر النائبة بمعرف الاشتراك واسم مجموعة الموارد واسم التطبيق. الإخراج هو كائن JSON مع بيانات اعتماد تعيين الدور التي توفر الوصول إلى تطبيق App Service الخاص بك مشابها لمقتطف JSON التالي. انسخ كائن JSON هذا لاحقاً.
تحتاج إلى توفير معرف العميل الخاص بالتطبيق ومعرف المستأجر ومعرفالاشتراك لإجراء Azure/تسجيل الدخول. يمكن توفير هذه القيم إما مباشرة في سير العمل أو يمكن تخزينها في أسرار GitHub والإشارة إليها في سير العمل خاصتك. حفظ القيم على أنها أسرار GitHub هو الخيار الأكثر أمانًا.
افتح مستودع GitHub وانتقل إلى Settings > Security > Secrets and variables > Actions > New repository secret.
إنشاء أسرار لـ AZURE_CLIENT_ID, AZURE_TENANT_ID, و AZURE_SUBSCRIPTION_ID. استخدم هذه القيم من تطبيق Active Directory لأسرار GitHub خاصتك:
GitHub Secret
تطبيق Active Directory
AZURE_CLIENT_ID
معرف التطبيق (العميل)
AZURE_TENANT_ID
معرف الدليل (المستأجر)
AZURE_SUBSCRIPTION_ID
مُعرّف الاشتراك
احفظ كل سر عن طريق تحديد إضافة سر.
في GitHub، تصفح المستودع الخاص بك. حدد Settings > Security > Secrets and variables > Actions > New repository secret.
لاستخدام بيانات الاعتماد على مستوى التطبيق، الصق محتويات ملف تعريف النشر الذي تم تنزيله في حقل قيمة البيانات السرية. اسم السر AZURE_WEBAPP_PUBLISH_PROFILE.
عند تكوين ملف سير عمل GitHub لاحقا، يمكنك استخدام AZURE_WEBAPP_PUBLISH_PROFILE في إجراء نشر Azure Web App. على سبيل المثال:
يتم تعريف سير العمل بواسطة ملف YAML (.yml) في /.github/workflows/ المسار في مستودع GitHub الخاص بك. ويتضمن هذا التعريف الخطوات والمعلمات المختلفة التي تشكّل سير العمل.
كحد أدنى، سيكون لملف سير العمل الخطوات المميزة التالية:
المصادقة باستخدام App Service باستخدام سر GitHub الذي أنشأته.
إنشاء تطبيق الويب.
نشر تطبيق الويب.
لنشر التعليمات البرمجية الخاصة بك إلى تطبيق App Service، يمكنك استخدام الإجراء azure/webapps-deploy@v3 . يتطلب الإجراء اسم تطبيق الويب الخاص بك في app-name ، واعتمادا على مكدس اللغة الخاص بك، مسار *.zip أو *.war أو *.jar أو مجلد للنشر في package. للحصول على قائمة كاملة بالمدخلات المحتملة azure/webapps-deploy@v3 للإجراء، راجع تعريف action.yml .
توضح الأمثلة التالية جزء سير العمل الذي يحول تطبيق الويب برمجيًا، بلغات مختلفة مدعومة.
للنشر باستخدام OpenID Connect باستخدام الهوية المدارة التي قمت بتكوينها، استخدم azure/login@v1 الإجراء مع client-idtenant-idالمفاتيح و و subscription-id والإشارة إلى أسرار GitHub التي قمت بإنشائها سابقا.
name: .NET Core
on: [push]
permissions:
id-token: write
contents: read
env:
AZURE_WEBAPP_NAME: my-app # set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: '.' # set this to the path to your web app project, defaults to the repository root
DOTNET_VERSION: '6.0.x' # set this to the dot net version to use
jobs:
build:
runs-on: ubuntu-latest
steps:
# Checkout the repo
- uses: actions/checkout@main
- uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
# Setup .NET Core SDK
- name: Setup .NET Core
uses: actions/setup-dotnet@v3
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
# Run dotnet build and publish
- name: dotnet build and publish
run: |
dotnet restore
dotnet build --configuration Release
dotnet publish -c Release --property:PublishDir='${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp'
# Deploy to Azure Web apps
- name: 'Run Azure webapp deploy action using publish profile credentials'
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }} # Replace with your app name
package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp'
- name: logout
run: |
az logout
حوّل تطبيق ASP.NET MVC برمجيًا ووزعه في Azure باستخدام كيان خدمة Azure. يستخدم المثال البيانات السرية من GitHub للقيم client-id وtenant-idوsubscription-id. يمكنك أيضًا إدخال هذه القيم مباشرة في إجراء تسجيل الدخول.
name: Deploy ASP.NET MVC App deploy to Azure Web App
on: [push]
permissions:
id-token: write
contents: read
env:
AZURE_WEBAPP_NAME: my-app # set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: '.' # set this to the path to your web app project, defaults to the repository root
NUGET_VERSION: '5.3.x' # set this to the dot net version to use
jobs:
build-and-deploy:
runs-on: windows-latest
steps:
# checkout the repo
- uses: actions/checkout@main
- uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Install Nuget
uses: nuget/setup-nuget@v1
with:
nuget-version: ${{ env.NUGET_VERSION}}
- name: NuGet to restore dependencies as well as project-specific tools that are specified in the project file
run: nuget restore
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v1.0.2
- name: Run MSBuild
run: msbuild .\SampleWebApplication.sln
- name: 'Run Azure webapp deploy action using publish profile credentials'
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }} # Replace with your app name
package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/SampleWebApplication/'
# Azure logout
- name: logout
run: |
az logout
حوّل تطبيق Java Spring برمجيًا ووزعه في Azure باستخدام كيان خدمة Azure. يستخدم المثال البيانات السرية من GitHub للقيم client-id وtenant-idوsubscription-id. يمكنك أيضًا إدخال هذه القيم مباشرة في إجراء تسجيل الدخول.
name: Build and deploy WAR app to Azure Web App using OpenID Connect
env:
JAVA_VERSION: '11' # set this to the Java version to use
DISTRIBUTION: microsoft # set this to the Java distribution
AZURE_WEBAPP_NAME: sampleapp # set this to the name of your web app
on: [push]
permissions:
id-token: write
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Java version
uses: actions/setup-java@v3.0.0
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: ${{ env.DISTRIBUTION }}
cache: 'maven'
- name: Build with Maven
run: mvn clean install
- name: Login to Azure
uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Deploy to Azure Web App
id: deploy-to-webapp
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
package: '*.war'
يمكنك العثور على هذا المثال الكامل باستخدام وظائف متعددة للبناء والنشر هنا أيضا.
name: JavaScript CI
on: [push]
permissions:
id-token: write
contents: read
name: Node.js
env:
AZURE_WEBAPP_NAME: my-app # set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: 'my-app-path' # set this to the path to your web app project, defaults to the repository root
NODE_VERSION: '18.x' # set this to the node version to use
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
# checkout the repo
- name: 'Checkout GitHub Action'
uses: actions/checkout@main
- uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Setup Node ${{ env.NODE_VERSION }}
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: 'npm install, build, and test'
run: |
npm install
npm run build --if-present
npm run test --if-present
working-directory: my-app-path
# deploy web app using Azure credentials
- uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}
# Azure logout
- name: logout
run: |
az logout
name: Python application
on:
[push]
permissions:
id-token: write
contents: read
env:
AZURE_WEBAPP_NAME: my-app # set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: '.' # set this to the path to your web app project, defaults to the repository root
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Set up Python 3.x
uses: actions/setup-python@v4
with:
python-version: 3.x
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Deploy web App using GH Action azure/webapps-deploy
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}
- name: logout
run: |
az logout
publish-profile يجب أن يشير الإدخال إلى AZURE_WEBAPP_PUBLISH_PROFILE سر GitHub الذي قمت بإنشائه سابقا.
name: .NET Core CI
on: [push]
env:
AZURE_WEBAPP_NAME: my-app-name # set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: '.' # set this to the path to your web app project, defaults to the repository root
DOTNET_VERSION: '6.0.x' # set this to the dot net version to use
jobs:
build:
runs-on: ubuntu-latest
steps:
# Checkout the repo
- uses: actions/checkout@main
# Setup .NET Core SDK
- name: Setup .NET Core
uses: actions/setup-dotnet@v3
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
# Run dotnet build and publish
- name: dotnet build and publish
run: |
dotnet restore
dotnet build --configuration Release
dotnet publish -c Release --property:PublishDir='${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp'
# Deploy to Azure Web apps
- name: 'Run Azure webapp deploy action using publish profile credentials'
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }} # Replace with your app name
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }} # Define secret variable in repository settings as per action documentation
package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp'
حوّل تطبيق MVC ASP.NET يستخدم NuGet برمجيًا وpublish-profile ووزعه للمصادقة.
name: Deploy ASP.NET MVC App deploy to Azure Web App
on: [push]
env:
AZURE_WEBAPP_NAME: my-app # set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: '.' # set this to the path to your web app project, defaults to the repository root
NUGET_VERSION: '5.3.x' # set this to the dot net version to use
jobs:
build-and-deploy:
runs-on: windows-latest
steps:
- uses: actions/checkout@main
- name: Install Nuget
uses: nuget/setup-nuget@v1
with:
nuget-version: ${{ env.NUGET_VERSION}}
- name: NuGet to restore dependencies as well as project-specific tools that are specified in the project file
run: nuget restore
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v1.0.2
- name: Run MSBuild
run: msbuild .\SampleWebApplication.sln
- name: 'Run Azure webapp deploy action using publish profile credentials'
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }} # Replace with your app name
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }} # Define secret variable in repository settings as per action documentation
package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/SampleWebApplication/'
حوّل تطبيق Java Spring برمجيًا ووزعه في Azure باستخدام ملف تعريف نشر Azure. يشير الإدخال publish-profile إلى البيانات السرية AZURE_WEBAPP_PUBLISH_PROFILE التي أنشأتها سابقًا.
name: Java CI with Maven
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 1.8
uses: actions/setup-java@v3
with:
java-version: 1.8
- name: Build with Maven
run: mvn -B package --file pom.xml
working-directory: my-app-path
- name: Azure WebApp
uses: Azure/webapps-deploy@v3
with:
app-name: my-app-name
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
package: my/target/*.jar
إنشاء تطبيق Tomcat ونشره إلى Azure باستخدام ملف تعريف نشر Azure. يشير الإدخال publish-profile إلى البيانات السرية AZURE_WEBAPP_PUBLISH_PROFILE التي أنشأتها سابقًا.
name: Build and deploy WAR app to Azure Web App using publish profile
env:
JAVA_VERSION: '11' # set this to the Java version to use
DISTRIBUTION: microsoft # set this to the Java distribution
AZURE_WEBAPP_NAME: sampleapp # set this to the name of your web app
on: [push]
permissions:
id-token: write
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Java version
uses: actions/setup-java@v3.0.0
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: ${{ env.DISTRIBUTION }}
cache: 'maven'
- name: Build with Maven
run: mvn clean install
- name: Deploy to Azure Web App
id: deploy-to-webapp
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
package: '*.war'
يمكنك العثور على هذا المثال الكامل باستخدام وظائف متعددة للبناء والنشر هنا أيضا.
حوّل تطبيق Node.js برمجيًا وتوزيعه إلى Azure باستخدام ملف تعريف نشر التطبيق. يشير الإدخال publish-profile إلى البيانات السرية AZURE_WEBAPP_PUBLISH_PROFILE التي أنشأتها سابقًا.
# File: .github/workflows/workflow.yml
name: JavaScript CI
on: [push]
env:
AZURE_WEBAPP_NAME: my-app-name # set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: 'my-app-path' # set this to the path to your web app project, defaults to the repository root
NODE_VERSION: '18.x' # set this to the node version to use
jobs:
build-and-deploy:
name: Build and Deploy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@main
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: npm install, build, and test
run: |
# Build and test the project, then
# deploy to Azure Web App.
npm install
npm run build --if-present
npm run test --if-present
working-directory: my-app-path
- name: 'Deploy to Azure WebApp'
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}
حوّل تطبيق Python برمجيًا وتوزيعه إلى Azure باستخدام ملف تعريف نشر التطبيق. لاحظ كيف يشير الإدخال publish-profile إلى البيانات السرية AZURE_WEBAPP_PUBLISH_PROFILE التي أنشأتها سابقًا.
name: Python CI
on:
[push]
env:
AZURE_WEBAPP_NAME: my-web-app # set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: '.' # set this to the path to your web app project, defaults to the repository root
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.x
uses: actions/setup-python@v4
with:
python-version: 3.x
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Building web app
uses: azure/appservice-build@v2
- name: Deploy web App using GH Action azure/webapps-deploy
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}
للنشر مع كيان الخدمة الذي قمت بتكوينه، استخدم azure/login@v1 الإجراء مع creds المفتاح والإشارة إلى AZURE_CREDENTIALS السر الذي قمت بإنشائه سابقا.
name: .NET Core
on: [push]
env:
AZURE_WEBAPP_NAME: my-app # set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: '.' # set this to the path to your web app project, defaults to the repository root
DOTNET_VERSION: '6.0.x' # set this to the dot net version to use
jobs:
build:
runs-on: ubuntu-latest
steps:
# Checkout the repo
- uses: actions/checkout@main
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
# Setup .NET Core SDK
- name: Setup .NET Core
uses: actions/setup-dotnet@v3
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
# Run dotnet build and publish
- name: dotnet build and publish
run: |
dotnet restore
dotnet build --configuration Release
dotnet publish -c Release --property:PublishDir='${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp'
# Deploy to Azure Web apps
- name: 'Run Azure webapp deploy action using Azure Credentials'
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }} # Replace with your app name
package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp'
- name: logout
run: |
az logout
حوّل تطبيق ASP.NET MVC برمجيًا ووزعه في Azure باستخدام كيان خدمة Azure. لاحظ كيف يشير الإدخال creds إلى البيانات السرية AZURE_CREDENTIALS التي أنشأتها سابقًا.
name: Deploy ASP.NET MVC App deploy to Azure Web App
on: [push]
env:
AZURE_WEBAPP_NAME: my-app # set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: '.' # set this to the path to your web app project, defaults to the repository root
NUGET_VERSION: '5.3.x' # set this to the dot net version to use
jobs:
build-and-deploy:
runs-on: windows-latest
steps:
# checkout the repo
- uses: actions/checkout@main
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Install Nuget
uses: nuget/setup-nuget@v1
with:
nuget-version: ${{ env.NUGET_VERSION}}
- name: NuGet to restore dependencies as well as project-specific tools that are specified in the project file
run: nuget restore
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v1.0.2
- name: Run MSBuild
run: msbuild .\SampleWebApplication.sln
- name: 'Run Azure webapp deploy action using Azure Credentials'
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }} # Replace with your app name
package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/SampleWebApplication/'
# Azure logout
- name: logout
run: |
az logout
حوّل تطبيق Java Spring برمجيًا ووزعه في Azure باستخدام كيان خدمة Azure. لاحظ كيف يشير الإدخال creds إلى البيانات السرية AZURE_CREDENTIALS التي أنشأتها سابقًا.
name: Java CI with Maven
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Set up JDK 1.8
uses: actions/setup-java@v3
with:
java-version: 1.8
- name: Build with Maven
run: mvn -B package --file pom.xml
working-directory: complete
- name: Azure WebApp
uses: Azure/webapps-deploy@v3
with:
app-name: my-app-name
package: my/target/*.jar
# Azure logout
- name: logout
run: |
az logout
إنشاء تطبيق Tomcat ونشره إلى Azure باستخدام كيان خدمة Azure. لاحظ كيف يشير الإدخال creds إلى البيانات السرية AZURE_CREDENTIALS التي أنشأتها سابقًا.
name: Build and deploy WAR app to Azure Web App using Service Principal Connect
env:
JAVA_VERSION: '11' # set this to the Java version to use
DISTRIBUTION: microsoft # set this to the Java distribution
AZURE_WEBAPP_NAME: sampleapp # set this to the name of your web app
on: [push]
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Java version
uses: actions/setup-java@v3.0.0
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: ${{ env.DISTRIBUTION }}
cache: 'maven'
- name: Build with Maven
run: mvn clean install
- name: Login to Azure
uses: azure/login@v2
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Deploy to Azure Web App
id: deploy-to-webapp
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
package: '*.war'
يمكنك العثور على هذا المثال الكامل باستخدام وظائف متعددة للبناء والنشر هنا أيضا.
حوّل تطبيق Node.js برمجيًا ووزعه في Azure باستخدام كيان خدمة Azure. لاحظ كيف يشير الإدخال creds إلى البيانات السرية AZURE_CREDENTIALS التي أنشأتها سابقًا.
name: JavaScript CI
on: [push]
name: Node.js
env:
AZURE_WEBAPP_NAME: my-app # set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: 'my-app-path' # set this to the path to your web app project, defaults to the repository root
NODE_VERSION: '18.x' # set this to the node version to use
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
# checkout the repo
- name: 'Checkout GitHub Action'
uses: actions/checkout@main
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Setup Node ${{ env.NODE_VERSION }}
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: 'npm install, build, and test'
run: |
npm install
npm run build --if-present
npm run test --if-present
working-directory: my-app-path
# deploy web app using Azure credentials
- uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}
# Azure logout
- name: logout
run: |
az logout
حوّل تطبيق Python برمجيًا ووزعه في Azure باستخدام كيان خدمة Azure. لاحظ كيف يشير الإدخال creds إلى البيانات السرية AZURE_CREDENTIALS التي أنشأتها سابقًا.
name: Python application
on:
[push]
env:
AZURE_WEBAPP_NAME: my-app # set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: '.' # set this to the path to your web app project, defaults to the repository root
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Set up Python 3.x
uses: actions/setup-python@v4
with:
python-version: 3.x
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Deploy web App using GH Action azure/webapps-deploy
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}
- name: logout
run: |
az logout
كيف أعمل نشر ملف WAR من خلال المكون الإضافي Maven وOpenID Connect
في حالة تكوين مشروع Java Tomcat الخاص بك باستخدام المكون الإضافي Maven، يمكنك أيضا النشر إلى Azure App Service من خلال هذا المكون الإضافي. إذا كنت تستخدم إجراء Azure CLI GitHub، فسيستفيد من بيانات اعتماد تسجيل الدخول إلى Azure.
يمكن العثور على مزيد من المعلومات حول إجراء GitHub ل CLI وكيفية استخدامه وتكوينه في إجراء Azure CLI GitHub.
يمكن العثور على مزيد من المعلومات حول الأمر az webapp deploy وكيفية الاستخدام وتفاصيل المعلمة في وثائق az webapp deploy.
كيف أعمل النشر إلى حاوية
باستخدام إجراء Azure Web Deploy، يمكنك أتمتة سير العمل الخاص بك لنشر حاويات مخصصة إلى App Service باستخدام GitHub Actions. يمكن العثور على معلومات مفصلة حول خطوات النشر باستخدام GitHub Actions، في Deploy to a Container.
كيف أعمل تحديث تكوين Tomcat بعد النشر
في حالة رغبتك في تحديث أي من إعدادات تطبيقات الويب الخاصة بك بعد النشر، يمكنك استخدام إجراء App Service Settings .
- uses: azure/appservice-settings@v1
with:
app-name: 'my-app'
slot-name: 'staging' # Optional and needed only if the settings have to be configured on the specific deployment slot
app-settings-json: '[{ "name": "CATALINA_OPTS", "value": "-Dfoo=bar" }]'
connection-strings-json: '${{ secrets.CONNECTION_STRINGS }}'
general-settings-json: '{"alwaysOn": "false", "webSocketsEnabled": "true"}' #'General configuration settings as Key Value pairs'
id: settings