Nastavení nasazení GitHub Actions při vytváření aplikace
Nasazení GitHub Actions je integrované do výchozího průvodce vytvořením aplikace. Stačí nastavit průběžné nasazování na kartě Nasazení a nakonfigurovat požadovanou organizaci, úložiště a větev.
Když povolíte průběžné nasazování, průvodce vytvořením aplikace automaticky vybere metodu ověřování na základě základního výběru ověřování a odpovídajícím způsobem nakonfiguruje vaši aplikaci a úložiště GitHub:
Nastavení nasazení GitHub Actions z Centra nasazení
Pro existující aplikaci můžete rychle začít s GitHub Actions pomocí Centra nasazení služby App Service. Tato metoda turn-key automaticky vygeneruje soubor pracovního postupu GitHub Actions na základě zásobníku vaší aplikace a potvrdí ho do úložiště GitHub.
Centrum nasazení také umožňuje snadno nakonfigurovat bezpečnější ověřování OpenID Connect pomocí možnosti identity přiřazené uživatelem.
Pokud má váš účet Azure potřebná oprávnění, můžete vybrat vytvoření identity přiřazené uživatelem. V opačném případě můžete v rozevíracím seznamu Identita vybrat existující spravovanou identitu přiřazenou uživatelem. Se správcem Azure můžete vytvořit spravovanou identitu přiřazenou uživatelem s rolí Přispěvatel webu.
Doporučený způsob ověřování pomocí Aplikace Azure Services pro GitHub Actions je OpenID Connect. Jedná se o metodu ověřování, která používá krátkodobé tokeny. Nastavení OpenID Connect pomocí GitHub Actions je složitější, ale nabízí posílené zabezpečení.
Případně se můžete ověřit pomocí spravované identity přiřazené uživatelem, instančního objektu nebo profilu publikování.
Následující kroky vás provedou postupem vytvoření aplikace active directory, instančního objektu a federovaných přihlašovacích údajů pomocí příkazů Azure CLI. Informace o vytvoření aplikace active directory, instančního objektu a federovaných přihlašovacích údajů na webu Azure Portal najdete v tématu Připojení GitHubu a Azure.
Tento příkaz vypíše JSON s vaším kódem appIdclient-id. Uložte hodnotu, kterou chcete použít jako tajný kód GitHubu AZURE_CLIENT_ID později.
Tuto hodnotu použijete objectId při vytváření federovaných přihlašovacích údajů pomocí rozhraní Graph API a odkazovat na ni jako na APPLICATION-OBJECT-ID.
Vytvořte instanční objekt. $appID Nahraďte id aplikace z výstupu JSON.
Tento příkaz vygeneruje výstup JSON s jiným objectId kódem a použije se v dalším kroku. Nový objectId je assignee-object-id.
Zkopírujte soubor, který appOwnerTenantId chcete použít jako tajný kód GitHubu pro AZURE_TENANT_ID pozdější použití.
az ad sp create --id $appId
Vytvořte nové přiřazení role podle předplatného a objektu. Ve výchozím nastavení je přiřazení role svázané s vaším výchozím předplatným. Nahraďte $subscriptionId ID předplatného, $resourceGroupName názvem vaší skupiny prostředků, $webappName názvem vaší webové aplikace a $assigneeObjectId vygenerovaným id. Zjistěte , jak spravovat předplatná Azure pomocí 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
Nahraďte APPLICATION-OBJECT-ID id aplikace (vygenerované při vytváření aplikace) pro vaši aplikaci Active Directory.
Nastavte hodnotu pro CREDENTIAL-NAME pozdější odkaz.
Nastavte .subject Jeho hodnota je definována GitHubem v závislosti na vašem pracovním postupu:
Úlohy v prostředí GitHub Actions: repo:< Organization/Repository >:environment:< Name >
Pro úlohy, které nejsou svázané s prostředím, zahrňte cestu odkaz pro větev nebo značku na základě cesty odkazu použité k aktivaci pracovního postupu: repo:< Organization/Repository >:ref:< ref path>. Například repo:n-username/ node_express:ref:refs/heads/my-branch nebo repo:n-username/ node_express:ref:refs/tags/my-tag.
Pro pracovní postupy aktivované událostí žádosti o přijetí změn: 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"
]
}
Profil publikování je přihlašovací údaje na úrovni aplikace. Nastavte svůj profil publikování jako tajný klíč GitHubu.
Na webu Azure Portal přejděte do služby App Service.
Na stránce Přehled vyberte Získat profil publikování.
Uložte stažený soubor. Obsah souboru použijete k vytvoření tajného kódu GitHubu.
Poznámka:
Od října 2020 potřebuje webové aplikace pro Linux nastavení WEBSITE_WEBDEPLOY_USE_SCM aplikace nastavené na truepřed stažením profilu publikování. Tento požadavek bude v budoucnu odebrán.
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
V předchozím příkladu nahraďte zástupné symboly ID předplatného, názvem skupiny prostředků a názvem aplikace. Výstupem je objekt JSON s přihlašovacími údaji pro přiřazení role, které poskytují přístup k vaší aplikaci App Service podobně jako v následujícím fragmentu kódu JSON. Zkopírujte tento objekt JSON pro pozdější použití.
Musíte zadat ID klienta, ID tenanta a ID předplatného vaší aplikace pro akci Azure/přihlášení. Tyto hodnoty je možné zadat buď přímo v pracovním postupu, nebo je můžete uložit v tajných kódech GitHubu a odkazovat na je ve vašem pracovním postupu. Uložením hodnot jako tajných kódů GitHubu je bezpečnější možnost.
Otevřete úložiště GitHub a přejděte do části Nastavení > tajných kódů zabezpečení > a proměnných > Actions > New repository secret.
Vytváření tajných kódů pro AZURE_CLIENT_ID, AZURE_TENANT_IDa AZURE_SUBSCRIPTION_ID. Pro tajné kódy GitHubu použijte tyto hodnoty z aplikace Active Directory:
Tajný kód GitHubu
Aplikace služby Active Directory
AZURE_CLIENT_ID
ID aplikace (klienta)
AZURE_TENANT_ID
ID adresáře (klienta)
AZURE_SUBSCRIPTION_ID
Subscription ID
Uložte každý tajný kód výběrem možnosti Přidat tajný kód.
Na GitHubu přejděte do úložiště. Vyberte Nastavení > tajných kódů zabezpečení > a proměnných > Akce > Nový tajný klíč úložiště.
Pokud chcete použít přihlašovací údaje na úrovni aplikace, vložte obsah staženého souboru profilu publikování do pole hodnoty tajného kódu. Pojmenujte tajný kód AZURE_WEBAPP_PUBLISH_PROFILE.
Když soubor pracovního postupu GitHubu nakonfigurujete později, použijete AZURE_WEBAPP_PUBLISH_PROFILE akci nasazení webové aplikace Azure. Příklad:
Na GitHubu přejděte do úložiště. Vyberte Nastavení > tajných kódů zabezpečení > a proměnných > Akce > Nový tajný klíč úložiště.
Pokud chcete použít přihlašovací údaje na úrovni uživatele, vložte celý výstup JSON z příkazu Azure CLI do pole hodnoty tajného klíče. Pojmenujte tajný kód AZURE_CREDENTIALS.
Když později nakonfigurujete soubor pracovního postupu GitHubu, použijete tajný kód pro vstup credsAzure/login. Příklad:
3. Přidání souboru pracovního postupu do úložiště GitHub
Pracovní postup je definován souborem YAML (.yml) v /.github/workflows/ cestě v úložišti GitHub. Tato definice obsahuje různé kroky a parametry, které tvoří pracovní postup.
Soubor pracovního postupu by měl minimálně následující různé kroky:
Ověřte se pomocí služby App Service pomocí tajného kódu GitHubu, který jste vytvořili.
Sestavte webovou aplikaci.
Nasaďte webovou aplikaci.
K nasazení kódu do aplikace App Service použijete akci azure/webapps-deploy@v3 . Akce vyžaduje název vaší webové aplikace a app-name v závislosti na zásobníku jazyků, cestu *.zip, *.war, *.jar nebo složku, do packagekteré se má nasadit . Úplný seznam možných vstupů pro azure/webapps-deploy@v3 akci najdete v definici action.yml .
Následující příklady ukazují část pracovního postupu, která vytváří webovou aplikaci v různých podporovaných jazycích.
Pokud chcete nasadit s OpenID Connect pomocí spravované identity, kterou jste nakonfigurovali, použijte azure/login@v1 akci s tenant-idclient-idklíči a klíči a subscription-id odkazujte na tajné kódy GitHubu, které jste vytvořili dříve.
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
Sestavte a nasaďte aplikaci ASP.NET MVC do Azure pomocí instančního objektu Azure. Příklad používá tajné kódy GitHubu client-idtenant-idpro , a subscription-id hodnoty. Tyto hodnoty můžete také předat přímo v akci přihlášení.
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
Sestavte a nasaďte aplikaci Java Spring do Azure pomocí instančního objektu Azure. Příklad používá tajné kódy GitHubu client-idtenant-idpro , a subscription-id hodnoty. Tyto hodnoty můžete také předat přímo v akci přihlášení.
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'
Tento úplný příklad najdete také v několika úlohách pro sestavení a nasazení.
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
Vstup publish-profile by měl odkazovat na tajný kód GitHubu AZURE_WEBAPP_PUBLISH_PROFILE , který jste vytvořili dříve.
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'
Sestavte a nasaďte aplikaci ASP.NET MVC, která používá NuGet a publish-profile k ověřování.
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/'
Sestavte a nasaďte aplikaci Java Spring do Azure pomocí profilu publikování v Azure. Vstup publish-profile odkazuje na AZURE_WEBAPP_PUBLISH_PROFILE tajný kód, který jste vytvořili dříve.
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
Pokud chcete místo hodnoty nasadit warjarhodnotu, změňte ji package .
Sestavte a nasaďte aplikaci Tomcat do Azure pomocí profilu publikování v Azure. Vstup publish-profile odkazuje na AZURE_WEBAPP_PUBLISH_PROFILE tajný kód, který jste vytvořili dříve.
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'
Tento úplný příklad najdete také v několika úlohách pro sestavení a nasazení.
Sestavte a nasaďte aplikaci Node.js do Azure pomocí profilu publikování aplikace. Vstup publish-profile odkazuje na AZURE_WEBAPP_PUBLISH_PROFILE tajný kód, který jste vytvořili dříve.
# 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 }}
Sestavte a nasaďte aplikaci v Pythonu do Azure pomocí profilu publikování aplikace. Všimněte si, jak publish-profile vstup odkazuje na AZURE_WEBAPP_PUBLISH_PROFILE tajný kód, který jste vytvořili dříve.
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 }}
K nasazení s nakonfigurovaným instančním objektem použijte azure/login@v1 akci s creds klíčem a odkazujte na AZURE_CREDENTIALS tajný klíč, který jste vytvořili dříve.
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
Sestavte a nasaďte aplikaci ASP.NET MVC do Azure pomocí instančního objektu Azure. Všimněte si, jak creds vstup odkazuje na AZURE_CREDENTIALS tajný kód, který jste vytvořili dříve.
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
Sestavte a nasaďte aplikaci Java Spring do Azure pomocí instančního objektu Azure. Všimněte si, jak creds vstup odkazuje na AZURE_CREDENTIALS tajný kód, který jste vytvořili dříve.
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
Sestavte a nasaďte aplikaci Tomcat do Azure pomocí instančního objektu Azure. Všimněte si, jak creds vstup odkazuje na AZURE_CREDENTIALS tajný kód, který jste vytvořili dříve.
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'
Tento úplný příklad najdete také v několika úlohách pro sestavení a nasazení.
Sestavte a nasaďte aplikaci Node.js do Azure pomocí instančního objektu Azure. Všimněte si, jak creds vstup odkazuje na AZURE_CREDENTIALS tajný kód, který jste vytvořili dříve.
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
Sestavte a nasaďte aplikaci v Pythonu do Azure pomocí instančního objektu Azure. Všimněte si, jak creds vstup odkazuje na AZURE_CREDENTIALS tajný kód, který jste vytvořili dříve.
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
Návody nasazení souboru WAR prostřednictvím modulu plug-in Maven?
V případě, že jste nakonfigurovali projekt Java Tomcat s modulem plug-in Maven, můžete prostřednictvím tohoto modulu plug-in nasadit také službu Aplikace Azure Service. Pokud použijete akci GitHubu v Azure CLI, použije se přihlašovací údaje Azure.
Další informace o akci GitHubu pro rozhraní příkazového řádku a o tom, jak ji použít a nakonfigurovat, najdete v akci Azure CLI na GitHubu.
Další informace o příkazu az webapp deploy, použití a podrobnosti o parametrech najdete v dokumentaci az webapp deploy.
Návody nasadit spouštěcí soubor?
Použijte akci GitHubu pro rozhraní příkazového řádku. Příklad:
Pomocí akce Nasazení webu Azure můžete pracovní postup automatizovat a nasadit vlastní kontejnery do služby App Service pomocí GitHub Actions. Podrobné informace o krocích nasazení pomocí GitHub Actions najdete v části Nasazení do kontejneru.
Návody po nasazení aktualizovat konfiguraci Tomcat?
Pokud chcete po nasazení aktualizovat některá nastavení webových aplikací, můžete použít akci Nastavení služby App Service.
- 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
Další informace o této akci a o tom, jak ji použít a nakonfigurovat, najdete v úložišti Nastavení služby App Service.
Další kroky
Projděte si reference na Azure GitHub Actions a pracovní postupy: