Развертывание в Службе приложений с помощью 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. Например:
Добавление файла рабочего процесса в репозиторий 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 с помощью этого подключаемого модуля. Если вы используете действие GitHub Azure CLI, оно использует учетные данные 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: