Начните работу с функцией GitHub Actions, которая позволит автоматизировать рабочий процесс и развертывать приложения в Службе приложений Azure из GitHub.
Необходимые компоненты
Настройка развертывания GitHub Actions при создании приложения
Развертывание GitHub Actions интегрировано в процесс создания веб-приложения по умолчанию. Задайте для непрерывного развертывания значение "Включить" на вкладке "Развертывание" и настройте нужную организацию, репозиторий и ветвь.
При включении непрерывного развертывания создание приложения автоматически выбирает метод проверки подлинности на основе базового выбора проверки подлинности и настраивает приложение и репозиторий GitHub соответствующим образом:
Настройка развертывания GitHub Actions из Центра развертывания
Для существующего приложения вы можете быстро приступить к работе с GitHub Actions с помощью центра развертывания Служба приложений. Этот метод поворачивающего ключа создает файл рабочего процесса GitHub Actions на основе стека приложения и фиксирует его в репозитории GitHub.
Центр развертывания также позволяет легко настроить более безопасную проверку подлинности OpenID Connect с удостоверением, назначенным пользователем. Дополнительные сведения см . в параметре удостоверения, назначаемого пользователем.
Если у вашей учетной записи Azure есть необходимые разрешения, можно создать назначаемое пользователем удостоверение. В противном случае можно выбрать существующее управляемое удостоверение, назначаемое пользователем, в раскрывающемся меню "Удостоверение ". Вы можете работать с администратором Azure, чтобы создать управляемое удостоверение, назначаемое пользователем, с ролью участника веб-сайта.
Дополнительные сведения см. в статье "Непрерывное развертывание в службе приложение Azure".
Настройка рабочего процесса GitHub Actions вручную
Рабочий процесс можно развернуть без использования Центра развертывания. В этом случае необходимо выполнить три шага:
-
Создание учетных данных развертывания
-
Настройка секрета GitHub
-
Добавление файла рабочего процесса в репозиторий GitHub
Создание учетных данных для развертывания.
Рекомендуемый способ проверки подлинности с помощью служб приложение Azure для GitHub Actions — с помощью OpenID Connect. Этот подход — это метод проверки подлинности, использующий кратковременные маркеры. Настройка OpenID Connect с помощью GitHub Actions более сложна, но обеспечивает защищенное обеспечение безопасности.
Кроме того, вы можете пройти проверку подлинности с помощью управляемого удостоверения, назначаемого пользователем, субъекта-службы или профиля публикации.
В следующей процедуре описаны шаги по созданию приложения Microsoft Entra, субъекта-службы и федеративных учетных данных с помощью инструкций Azure CLI. Сведения о создании приложения Microsoft Entra, субъекта-службы и федеративных учетных данных в портал Azure см. в статье Connect GitHub и Azure.
Если у вас нет существующего приложения, зарегистрируйте новое приложение Microsoft Entra и субъект-службу, которые могут получить доступ к ресурсам. Создайте приложение Microsoft Entra.
az ad app create --display-name myApp
Эта команда возвращает JSON с вашим идентификатором appId
client-id
. Сохраните это значение, чтобы позднее применить в качестве секрета GitHub AZURE_CLIENT_ID
.
Значение используется objectId
при создании федеративных учетных данных с помощью API Graph и ссылки на него как на него APPLICATION-OBJECT-ID
.
Создание субъекта-службы. Замените $appID
значением 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 CLI.
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
Выполните следующую команду, чтобы создать новые федеративные учетные данные удостоверения для приложения Entra.
Замените APPLICATION-OBJECT-ID
идентификатор appId (созданный при создании приложения) для приложения Active Directory.
Задайте значение для CREDENTIAL-NAME
, оно понадобится позже.
Задайте subject
. GitHub определяет его значение в зависимости от рабочего процесса:
- Для заданий в среде GitHub Actions:
repo:< Organization/Repository >:environment:< Name >
- Если задания не привязаны к среде, включите путь ссылки для ветви или тега с учетом пути, используемого для запуска рабочего процесса:
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.
Перейдите к службе приложений на портале Azure.
На странице "Обзор" выберите "Скачать профиль публикации".
Сохраните скачанный файл. Используйте содержимое файла для создания секрета GitHub.
Примечание.
По состоянию на октябрь 2020 г. веб-приложения Linux должны задать параметр WEBSITE_WEBDEPLOY_USE_SCM
приложения перед true
загрузкой профиля публикации. В дальнейшем это требование будет отменено.
Вы можете создать субъект-службу с помощью команды az ad sp create-for-rbac в Azure CLI. Выполните эту команду с помощью Azure Cloud Shell в портал Azure или выбрав Open Cloud Shell.
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 с учетными данными назначения ролей, которые предоставляют доступ к приложению Служба приложений, как показано в следующем фрагменте КОДА JSON. Скопируйте этот объект JSON для последующего использования.
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
(...)
}
Внимание
Рекомендуется всегда предоставлять минимальные разрешения доступа. Область в предыдущем примере ограничена конкретным приложением Службы приложений, а не всей группой ресурсов.
Необходимо указать идентификатор клиента приложения, идентификатор клиента и идентификаторподписки в действие Azure/login. Эти значения могут быть указаны непосредственно в рабочем процессе или храниться в секретах GitHub с указанием ссылок на них в рабочем процессе. Сохранение значений в виде секретов GitHub является более безопасным вариантом.
Откройте репозиторий GitHub и перейдите к разделу "Параметры секретов>безопасности>" и переменных>Actions>New репозитория.
Создайте секреты для AZURE_CLIENT_ID
, AZURE_TENANT_ID
и AZURE_SUBSCRIPTION_ID
. Используйте эти значения из приложения Active Directory для секретов GitHub:
Секрет Github |
Приложение Active Directory |
AZURE_CLIENT_ID |
Идентификатор приложения (клиент) |
AZURE_TENANT_ID |
Идентификатор каталога (клиента) |
AZURE_SUBSCRIPTION_ID |
ИД подписки |
Сохраните каждый секрет, выбрав Добавить секрет.
В GitHub перейдите к репозиторию. Выберите "Параметры секретов>безопасности>" и переменных>"Действия>нового репозитория".
Чтобы использовать учетные данные уровня приложения, созданные в предыдущем разделе, вставьте содержимое скачавшего файла профиля публикации в поле значения секрета. Присвойте этому секрету имя AZURE_WEBAPP_PUBLISH_PROFILE
.
При настройке файла рабочего процесса GitHub позже используйте AZURE_WEBAPP_PUBLISH_PROFILE
действие развертывания веб-приложения Azure. Например:
- uses: azure/webapps-deploy@v2
with:
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
В GitHub перейдите к репозиторию. Выберите "Параметры секретов>безопасности>" и переменных>"Действия>нового репозитория".
Чтобы использовать учетные данные уровня пользователя, созданные в предыдущем разделе, вставьте весь результат JSON из команды Azure CLI в поле значения секрета. Присвойте этому секрету имя AZURE_CREDENTIALS
.
При настройке файла рабочего процесса GitHub позже используйте секрет для входных данных creds
Azure/login. Например:
- uses: azure/login@v2
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
Добавление файла рабочего процесса в репозиторий GitHub
Файл YAML (.yml) в /.github/workflows/
пути в репозитории GitHub определяет рабочий процесс. Это определение содержит разные шаги и параметры рабочего процесса.
Как минимум, файл рабочего процесса будет иметь следующие различные шаги:
- Проверка подлинности с помощью Служба приложений с помощью созданного секрета GitHub.
- Создайте веб-приложение.
- Разверните веб-приложение.
Чтобы развернуть код в приложении Служба приложений, используйте действие azure/webapps-deploy@v3. Для действия требуется имя веб-приложения и app-name
в зависимости от стека языка путь *.zip, *.war, *.jar или папки для развертывания.package
Полный список возможных входных данных для azure/webapps-deploy@v3
действия см . в action.yml.
В следующих примерах показана часть рабочего процесса, которая создает веб-приложение на разных поддерживаемых языках.
Чтобы развернуть с помощью OpenID Connect с помощью настроенного управляемого удостоверения, используйте azure/login@v2
действие с tenant-id
client-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@v2
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@v2
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/[email protected]
- 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 Boot в Azure с помощью субъекта-службы Azure. В примере используются секреты GitHub для значений client-id
, tenant-id
и subscription-id
. Эти значения также можно передать непосредственно в действии входа.
name: Java CI with Maven
on: [push]
permissions:
id-token: write
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- 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
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/[email protected]
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@v2
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@v2
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'
Создайте и разверните приложение ASP.NET MVC, которое использует для проверки подлинности 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/[email protected]
- 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 Boot в 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
Чтобы развернуть war
вместо jar
, измените значение package
.
- name: Azure WebApp
uses: Azure/webapps-deploy@v3
with:
app-name: my-app-name
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
package: my/target/*.war
Создайте и разверните приложение 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/[email protected]
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@v2
действие с ключом 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@v2
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@v2
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/[email protected]
- 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 Boot в 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@v2
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/[email protected]
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@v2
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@v2
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?
Если вы настроили проект Java Tomcat с подключаемым модулем Maven, можно также развернуть в приложение Azure service с помощью этого подключаемого модуля. Если вы используете действие GitHub Azure CLI, оно использует учетные данные Azure.
- name: Azure CLI script file
uses: azure/cli@v2
with:
inlineScript: |
mvn package azure-webapp:deploy
Дополнительные сведения о подключаемом модуле Maven и его настройке см. вики-сайте подключаемых модулей Maven для службы приложение Azure.
Разделы справки развернуть WAR-файл с помощью Az CLI?
Если вы используете Azure CLI для развертывания в Служба приложений, можно использовать действие GitHub для Azure CLI.
- name: Azure CLI script
uses: azure/cli@v2
with:
inlineScript: |
az webapp deploy --src-path '${{ github.workspace }}/target/yourpackage.war' --name ${{ env.AZURE_WEBAPP_NAME }} --resource-group ${{ env.RESOURCE_GROUP }} --async true --type war
Дополнительные сведения о действии GitHub для ИНТЕРФЕЙСА командной строки и его настройке см . в действии GitHub Azure CLI.
Дополнительные сведения о команде az webapp deploy, ее использовании и сведениях о параметрах см . в документации по az webapp deploy.
Разделы справки развернуть файл запуска?
Используйте действие GitHub для CLI. Например:
- name: Deploy startup script
uses: azure/cli@v2
with:
inlineScript: |
az webapp deploy --src-path ${{ github.workspace }}/src/main/azure/createPasswordlessDataSource.sh --name ${{ env.AZURE_WEBAPP_NAME }} --resource-group ${{ env.RESOURCE_GROUP }} --type startup --track-status false
Разделы справки развернуть в контейнере?
Действие веб-развертывания Azure позволяет автоматизировать рабочий процесс, чтобы развернуть настраиваемые контейнеры в Службе приложений с помощью GitHub Actions. Дополнительные сведения о шагах по развертыванию с помощью GitHub Actions см. в разделе "Развертывание в контейнере".
Разделы справки обновить конфигурацию Tomcat после развертывания?
Если вы хотите обновить любой из параметров веб-приложений после развертывания, можно использовать действие Служба приложений параметров.
- 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
Дополнительные сведения об этом действии и его настройке см. в репозитории параметров Служба приложений.
Связанный контент
Ознакомьтесь со ссылками на действия и рабочие процессы Azure GitHub: