Развертывание в Службе приложений с помощью GitHub Actions
Статья
Начните работу с функцией GitHub Actions, которая позволит автоматизировать рабочий процесс и развертывать приложения в Службе приложений Azure из GitHub.
Учетная запись GitHub. Если у вас ее нет, зарегистрируйтесь бесплатно.
Настройка развертывания GitHub Actions при создании приложения
Развертывание GitHub Actions интегрировано в мастер создания приложений по умолчанию. Вам просто нужно настроить непрерывное развертывание, чтобы включить на вкладке "Развертывание" и настроить нужную организацию, репозиторий и ветвь.
При включении непрерывного развертывания мастер создания приложения автоматически выбирает метод проверки подлинности на основе базового выбора проверки подлинности и настраивает приложение и репозиторий GitHub соответствующим образом:
Настройка развертывания GitHub Actions из Центра развертывания
Для существующего приложения вы можете быстро приступить к работе с GitHub Actions с помощью центра развертывания Служба приложений. Этот метод поворачивающего ключа автоматически создает файл рабочего процесса GitHub Actions на основе стека приложения и фиксирует его в репозитории GitHub.
Центр развертывания также позволяет легко настроить более безопасную проверку подлинности OpenID Connect с помощью параметра удостоверения, назначаемого пользователем.
Если у вашей учетной записи Azure есть необходимые разрешения, можно выбрать для создания удостоверения, назначаемого пользователем. В противном случае можно выбрать существующее управляемое удостоверение, назначаемое пользователем, в раскрывающемся списке "Удостоверение ". Вы можете работать с администратором Azure, чтобы создать управляемое удостоверение, назначаемое пользователем, с ролью участника веб-сайта.
Рекомендуемый способ проверки подлинности с помощью служб приложение Azure для GitHub Actions — с помощью OpenID Connect. Это метод проверки подлинности, использующий кратковременные маркеры. Настройка OpenID Connect с помощью GitHub Actions более сложна, но обеспечивает защищенное обеспечение безопасности.
Кроме того, вы можете пройти проверку подлинности с помощью управляемого удостоверения, назначаемого пользователем, субъекта-службы или профиля публикации.
Ниже описаны действия по созданию приложения Active Directory, субъекта-службы и федеративных учетных данных с помощью инструкций Azure CLI. Сведения о создании приложения Active Directory, субъекта-службы и федеративных учетных данных в портал Azure см. в статье Connect GitHub и Azure.
Эта команда выводит JSON с вашим идентификатором appIdclient-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
Замените 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 --name "myApp" --role contributor \
--scopes /subscriptions/<subscription-id>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name> \
--json-auth
В предыдущем примере замените заполнители идентификатором подписки, именем группы ресурсов и именем приложения. Выходные данные — это объект JSON с учетными данными назначения ролей, которые предоставляют доступ к приложению Служба приложений, как показано в следующем фрагменте КОДА JSON. Скопируйте этот объект JSON для последующего использования.
Рекомендуется всегда предоставлять минимальные разрешения доступа. Область в предыдущем примере ограничена конкретным приложением Службы приложений, а не всей группой ресурсов.
Необходимо указать идентификатор клиента приложения, идентификатор клиента и идентификатор подписки для действия 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. Например:
В GitHub найдите нужный репозиторий. Выберите "Параметры секретов > безопасности > " и переменных > "Действия > нового репозитория".
Чтобы использовать учетные данные уровня пользователя, вставьте все выходные данные JSON, полученные из команды Azure CLI, в поле значения секрета. Присвойте этому секрету имя AZURE_CREDENTIALS.
При настройке файла рабочего процесса GitHub позже вы используете секрет для входных данных creds Azure/login. Например:
3. Добавьте файл рабочего процесса в репозиторий 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@v1 действие с tenant-idclient-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
Создайте и разверните приложение ASP.NET MVC в 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'
Создайте и разверните приложение 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/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
Чтобы развернуть war вместо jar, измените значение package.
Создайте и разверните приложение 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
Создайте и разверните приложение ASP.NET MVC в 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?
Если вы настроили проект Java Tomcat с подключаемым модулем Maven, можно также развернуть в приложение Azure service с помощью этого подключаемого модуля. Если вы используете действие Azure CLI GitHub, оно будет использовать учетные данные для входа Azure.
Действие веб-развертывания 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: