A GitHub Actions használatával automatizálhatja a munkafolyamatot, és üzembe helyezheti az Azure App Service-ben a GitHubról.
Prerequisites
A GitHub Actions üzembe helyezésének beállítása alkalmazás létrehozásakor
A GitHub Actions üzembe helyezése integrálva van az alapértelmezett webalkalmazás-létrehozási folyamatba. Állítsa a folyamatos üzembe helyezéstengedélyezésre az Üzembe helyezés lapon, és konfigurálja a kiválasztott szervezetet, adattárat és ágat.
A folyamatos üzembe helyezés engedélyezésekor a Webalkalmazás létrehozása folyamat automatikusan kiválasztja a hitelesítési módszert az alapszintű hitelesítés kiválasztása alapján, és ennek megfelelően konfigurálja az alkalmazást és a GitHub-adattárat:
A GitHub Actions üzembe helyezésének beállítása az Üzembe helyezési központból
Egy meglévő alkalmazás esetén gyorsan megkezdheti a GitHub Actions használatát az App Service Deployment Center használatával. Ez a kulcsrakész módszer létrehoz egy GitHub Actions-munkafolyamatfájlt az alkalmazás verem alapján, és véglegesíti azt a GitHub-adattárban.
Az Üzembe helyezési központ használatával egyszerűen konfigurálhatja a biztonságosabb OpenID Connect-hitelesítést egy felhasználó által hozzárendelt identitással. További információt a felhasználó által hozzárendelt identitásbeállításban talál.
Ha az Azure-fiókja rendelkezik a szükséges engedélyekkel, létrehozhat egy felhasználó által hozzárendelt identitást. Ellenkező esetben kiválaszthat egy meglévő felhasználó által hozzárendelt felügyelt identitást az Identitás legördülő menüben. Az Azure-rendszergazdával együttműködve létrehozhat egy felhasználó által hozzárendelt felügyelt identitást a webhely közreműködői szerepkörével.
További információ: Folyamatos üzembe helyezés Azure-alkalmazás szolgáltatásban.
GitHub Actions-munkafolyamat manuális beállítása
A munkafolyamatot az Üzembe helyezési központ használata nélkül is üzembe helyezheti. Hajtsa végre az alábbi három lépést:
-
Üzembehelyezési hitelesítő adatok létrehozása.
-
Konfigurálja a GitHub titkos kulcsát.
-
Adja hozzá a munkafolyamat-fájlt a GitHub-adattárhoz.
Üzembehelyezési hitelesítő adatok létrehozása
Javasoljuk, hogy az OpenID Connect használatával hitelesítse magát az Azure App Service for GitHub Actions szolgáltatással. Ez a hitelesítési módszer rövid élettartamú tokeneket használ. Az OpenID Connect és a GitHub Actions beállítása összetettebb, de fokozott biztonságot nyújt.
Hitelesítést felhasználó által hozzárendelt felügyelt identitással, szolgáltatásnévvel vagy közzétételi profillal is végezhet.
Az alábbi eljárás ismerteti a Microsoft Entra-alkalmazás, a szolgáltatásnév és az összevont hitelesítő adatok Azure CLI-utasítások használatával történő létrehozásának lépéseit. Ha tudni szeretné, hogyan hozhat létre Microsoft Entra-alkalmazást, szolgáltatásnevet és összevont hitelesítő adatokat az Azure Portalon, olvassa el a GitHub és az Azure összekapcsolása című témakört.
Ha nem rendelkezik meglévő alkalmazással, regisztráljon egy új Microsoft Entra-alkalmazást és szolgáltatásnevet, amely hozzáfér az erőforrásokhoz. Hozza létre a Microsoft Entra alkalmazást.
az ad app create --display-name myApp
Ez a parancs egy olyan JSON-kimenetet ad vissza, amely appId az Öné client-id. Mentse később GitHub-titkos kódként AZURE_CLIENT_ID használni kívánt értéket.
Ezt az objectId értéket akkor használja, ha összevont hitelesítő adatokat hoz létre a Graph API-val, és erre hivatkozik APPLICATION-OBJECT-ID néven.
Hozzon létre egy szolgáltatásnevet. Cserélje le a $appID-t az appId-re a JSON-kimenetből.
Ez a parancs létrehoz egy JSON-kimenetet egy másik objectId-vel, amelyet a következő lépésben lehet használni. Az új objectId a assignee-object-id.
Másolja le a appOwnerTenantId GitHub titkos kulcsként későbbi felhasználásra a AZURE_TENANT_ID-hez.
az ad sp create --id $appId
Hozzon létre egy új szerepkör-hozzárendelést előfizetés és objektum szerint. Alapértelmezés szerint a szerepkör-hozzárendelés az alapértelmezett előfizetéshez van kötve. Cserélje le $subscriptionId az előfizetés azonosítójára, $resourceGroupName az erőforráscsoport nevére, $webappName a webalkalmazás nevére, és $assigneeObjectId a létrehozott id-ra.
Megtudhatja, hogyan kezelheti az Azure-előfizetéseket az Azure CLI-vel.
az role assignment create --role "Website Contributor" --subscription $subscriptionId --assignee-object-id $assigneeObjectId --scope /subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Web/sites/$webappName --assignee-principal-type ServicePrincipal
Futtassa a következő parancsot egy új összevont identitás hitelesítő adatainak létrehozásához a Microsoft Entra-alkalmazáshoz.
Cserélje le APPLICATION-OBJECT-ID az appId Active Directory-alkalmazás alkalmazás létrehozása során létrehozottra.
Adjon meg egy értéket a CREDENTIAL-NAME későbbi hivatkozáshoz.
Állítsa be a subject. A GitHub a munkafolyamattól függően határozza meg az értékét:
- A GitHub Actions-környezetben lévő feladatokhoz használja a következőket:
repo:< Organization/Repository >:environment:< Name >
- A környezethez nem kapcsolódó feladatok esetében adja hozzá az ág/címke referenciaútvonalát a munkafolyamat aktiválásához használt referenciaútvonal alapján:
repo:< Organization/Repository >:ref:< ref path>. Például, repo:n-username/ node_express:ref:refs/heads/my-branch vagy repo:n-username/ node_express:ref:refs/tags/my-tag.
- A lekéréses kérelem eseménye által aktivált munkafolyamatok esetében használja a következőt:
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"
]
}
A közzétételi profil egy alkalmazásszintű hitelesítő adat. A közzétételi profil beállítása GitHub-titkos kódként.
Nyissa meg az App Service-t az Azure Portalon.
Az Áttekintés lapon válassza a Közzétételi profil letöltése lehetőséget.
Mentse a letöltött fájlt. A fájl tartalmával hozzon létre egy GitHub-titkos kulcsot.
Note
2020 októberétől a Linux-webalkalmazások esetében az alkalmazásbeállítást meg kell adni WEBSITE_WEBDEPLOY_USE_SCM, mielőtt a trueközzétételi profilt letöltenék.
Létrehozhat egy egyszerű szolgáltatást az az ad sp create-for-rbac található paranccsal. Futtassa ezt a parancsot az Azure Cloud Shell használatával az Azure portálon vagy a Cloud Shell megnyitásával.
az ad sp create-for-rbac --name "myApp" --role "Website Contributor" \
--scopes /subscriptions/<subscription-id>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name> \
--json-auth
Az előző példában cserélje le a helyőrzőket az előfizetés azonosítójára, az erőforráscsoport nevére és az alkalmazás nevére. A kimenet egy JSON-objektum, amely az App Service-alkalmazáshoz hozzáférést biztosító szerepkör-hozzárendelési hitelesítő adatokkal rendelkezik. A kimenetnek a következő JSON-kódrészlethez hasonlóan kell kinéznie. Másolja ezt a JSON-objektumot későbbre.
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
(...)
}
Important
Javasoljuk, hogy adjon meg minimális hozzáférést. Az előző példában szereplő hatókör az adott App Service-alkalmazásra korlátozódik, nem pedig a teljes erőforráscsoportra.
Meg kell adnia az alkalmazás ügyfél-azonosítóját, bérlőazonosítóját és előfizetés-azonosítóját a Azure/login művelethez. Ezek az értékek közvetlenül a munkafolyamatban is megadhatók, vagy a GitHub titkokban tárolhatók, és a munkafolyamatban hivatkozhatók. Az értékek GitHub-titkos kulcsként való mentése a biztonságosabb megoldás.
Nyissa meg a GitHub-adattárat, és lépjen a Beállítások>biztonsági>titkos kulcsok és változók> MűveletekÚj tárház titkos> elemre.
Titkos kulcsok létrehozása a következőhöz AZURE_CLIENT_ID: , AZURE_TENANT_IDés AZURE_SUBSCRIPTION_ID. Használja ezeket az értékeket az Active Directory-alkalmazásból a GitHub-titkos kulcsokhoz:
| GitHub-titkos kód |
Active Directory-alkalmazás |
AZURE_CLIENT_ID |
Alkalmazás (ügyfél) azonosítója |
AZURE_TENANT_ID |
Címtár (ügyfél) azonosítója |
AZURE_SUBSCRIPTION_ID |
Előfizetés azonosító |
Válassza a Titkos kód hozzáadása lehetőséget az egyes titkos kódok mentéséhez.
A GitHubon keresse meg az adattárat. Válassza a Beállítások>Biztonság>Titkok és változók>Műveletek>Új adattár titka lehetőséget.
Az előző szakaszban létrehozott alkalmazásszintű hitelesítő adatok használatához illessze be a letöltött közzétételi profilfájl tartalmát a titkos kód érték mezőjébe. Nevezze el a titkos kulcsot AZURE_WEBAPP_PUBLISH_PROFILE.
Ha később konfigurálja a GitHub-munkafolyamatfájlt, használja az AZURE_WEBAPP_PUBLISH_PROFILEAzure Web App üzembe helyezése műveletben. Például:
- uses: azure/webapps-deploy@v2
with:
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
A GitHubon keresse meg az adattárat. Válassza a Beállítások>Biztonság>Titkok és változók>Műveletek>Új adattár titka lehetőséget.
Az előző szakaszban létrehozott felhasználói szintű hitelesítő adatok használatához illessze be az Azure CLI parancs teljes JSON-kimenetét a titkos kód értékmezőjébe. Nevezze el a titkos kulcsot AZURE_CREDENTIALS.
Ha később konfigurálja a GitHub-munkafolyamatfájlt, használja a titkos kulcsot a bemenethez credsAzure/login. Például:
- uses: azure/login@v2
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
Munkafolyamat-fájl hozzáadása a GitHub-adattárhoz
A GitHub-adattár elérési /.github/workflows/ útjának egyik YAML-fájlja (.yml) definiál egy munkafolyamatot. Ez a definíció a munkafolyamatot alkotó különböző lépéseket és paramétereket tartalmazza.
A munkafolyamat-fájl legalább a következő különböző lépésekkel rendelkezik:
- Hitelesítés az App Service-ben a létrehozott GitHub-titkos kóddal.
- A webalkalmazás létrehozása.
- A webalkalmazás üzembe helyezése.
A kód App Service-alkalmazásokban való üzembe helyezéséhez használja a azure/webapps-deploy@v3 műveletet. A művelethez meg kell adni a webalkalmazás nevét a app-name helyen, és a nyelvi veremtől függően meg kell adni egy *.zip, *.war, *.jar, vagy mappa elérési útját, amelyet a package helyen kell üzembe helyezni. A azure/webapps-deploy@v3 művelet lehetséges bemeneteinek teljes listáját lásd a action.yml fájlban.
Az alábbi példák a webalkalmazást összeállító munkafolyamat különböző támogatott nyelveken történő részét mutatják be.
Ha az OpenID Connect használatával szeretné üzembe helyezni a konfigurált felügyelt identitást, használja a azure/login@v2 műveletet a client-id, tenant-idés subscription-id a kulcsokkal. Hivatkozzon a korábban létrehozott GitHub-titkos kódokra.
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:
# Check out 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 modellnézet-vezérlő (MVC) alkalmazás létrehozása és üzembe helyezése az Azure-ban egy Azure-szolgáltatásnév használatával. A példa GitHub-titkos kódokat használ a , client-idés tenant-id értékekhezsubscription-id. Ezeket az értékeket közvetlenül a bejelentkezési műveletben is átadhatja.
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:
# Check out 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/setup-msbuild@v1.0.2
- name: Run MSBuild
run: msbuild .\SampleWebApplication.sln
- name: 'Run Azure webapp deploy action using publish profile credentials'
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }} # Replace with your app name
package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/SampleWebApplication/'
# Azure logout
- name: logout
run: |
az logout
Java Spring Boot-alkalmazás létrehozása és üzembe helyezése az Azure-ban egy Azure-szolgáltatásnév használatával. A példa GitHub-titkos kódokat használ a , client-idés tenant-id értékekhezsubscription-id. Ezeket az értékeket közvetlenül a bejelentkezési műveletben is átadhatja.
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/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'
Íme egy teljes példa , amely több feladatot használ a buildeléshez és üzembe helyezéshez.
Important
Ha Node.js alkalmazást telepít TypeScript vagy más lefordított nyelv használatával azure/webapps-deploy@v3, először építse meg az alkalmazást a GitHub Actions segítségével, majd telepítse a lefordított kimeneti mappát (például dist/ vagy build/). Ha ehelyett az App Service build automatizálását szeretné használni, állítsa be az alkalmazásbeállítást a SCM_DO_BUILD_DURING_DEPLOYMENTtrue:
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: '24.x' # Set this to the node version to use
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
# Check out 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 by 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
A publish-profile bemenetnek hivatkoznia kell a AZURE_WEBAPP_PUBLISH_PROFILE korábban létrehozott GitHub-titkos kódra.
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:
# Check out 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'
NuGetet és hitelesítést használó ASP.NET modellnézet-vezérlő (MVC) alkalmazás létrehozása és publish-profile üzembe helyezése.
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 Boot-alkalmazás létrehozása és üzembe helyezése az Azure-ban egy Azure-beli közzétételi profil használatával. A publish-profile bemenet a AZURE_WEBAPP_PUBLISH_PROFILE korábban létrehozott titkos kódra hivatkozik.
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
Amikor egy war helyett egy jar elemet szeretne üzembe helyezni, módosítsa az package értéket.
- 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-alkalmazás létrehozása és üzembe helyezése az Azure-ban egy Azure-beli közzétételi profil használatával. A publish-profile bemenet a AZURE_WEBAPP_PUBLISH_PROFILE korábban létrehozott titkos kódra hivatkozik.
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'
Íme egy teljes példa , amely több feladatot használ a buildeléshez és üzembe helyezéshez.
Important
Ha TypeScript vagy más lefordított nyelv használatával azure/webapps-deploy@v3helyez üzembe Node.js alkalmazást, először a GitHub Actionsben hozza létre az alkalmazást, majd helyezze üzembe a lefordított kimeneti mappát (például dist/ vagy build/). Ha ehelyett az App Service buildautomatizálását szeretné használni, állítsa be az alkalmazásbeállítást a következőre: SCM_DO_BUILD_DURING_DEPLOYMENTtrue.
Node.js-alkalmazás létrehozása és üzembe helyezése az Azure-ban az alkalmazás közzétételi profiljával. A publish-profile bemenet a AZURE_WEBAPP_PUBLISH_PROFILE korábban létrehozott titkos kódra hivatkozik.
# 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: '24.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-alkalmazás létrehozása és üzembe helyezése az Azure-ban az alkalmazás közzétételi profiljával. Figyelje meg, hogy a publish-profile bemenet hogyan hivatkozik a AZURE_WEBAPP_PUBLISH_PROFILE korábban létrehozott titkosított adatra.
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 }}
A konfigurált szolgáltatásnévvel való üzembe helyezéshez használja a azure/login@v2 műveletet a creds kulccsal, és hivatkozzon a AZURE_CREDENTIALS korábban létrehozott titkos kódra.
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:
# Check out the repo
- uses: actions/checkout@main
- uses: azure/login@v2
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
# Set up .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 modellnézet-vezérlő (MVC) alkalmazás létrehozása és üzembe helyezése az Azure-ban egy Azure-szolgáltatásnév használatával. A creds bemenet a AZURE_CREDENTIALS korábban létrehozott titkos kódra hivatkozik.
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:
# Check out 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/setup-msbuild@v1.0.2
- name: Run MSBuild
run: msbuild .\SampleWebApplication.sln
- name: 'Run Azure webapp deploy action using Azure Credentials'
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }} # Replace with your app name
package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/SampleWebApplication/'
# Azure logout
- name: logout
run: |
az logout
Java Spring Boot-alkalmazás létrehozása és üzembe helyezése az Azure-ban egy Azure-szolgáltatásnév használatával. A creds bemenet a AZURE_CREDENTIALS korábban létrehozott titkos kódra hivatkozik.
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-alkalmazás létrehozása és üzembe helyezése az Azure-ban egy Azure-szolgáltatásnév használatával. A creds bemenet a AZURE_CREDENTIALS korábban létrehozott titkos kódra hivatkozik.
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'
Íme egy teljes példa , amely több feladatot használ a buildeléshez és üzembe helyezéshez.
Important
Ha TypeScript vagy más lefordított nyelv használatával azure/webapps-deploy@v3helyez üzembe Node.js alkalmazást, először a GitHub Actionsben hozza létre az alkalmazást, majd helyezze üzembe a lefordított kimeneti mappát (például dist/ vagy build/). Ha ehelyett az App Service buildautomatizálását szeretné használni, állítsa az alkalmazásbeállítást a SCM_DO_BUILD_DURING_DEPLOYMENT következő értékre: true.
Node.js-alkalmazás létrehozása és üzembe helyezése az Azure-ban egy Azure-szolgáltatásnév használatával. A creds bemenet a AZURE_CREDENTIALS korábban létrehozott titkos kódra hivatkozik.
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: '24.x' # Set this to the node version to use
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
# Check out 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-alkalmazás létrehozása és üzembe helyezése az Azure-ban egy Azure-szolgáltatásnév használatával. A creds bemenet a AZURE_CREDENTIALS korábban létrehozott titkos kódra hivatkozik.
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
Gyakori kérdések
Hogyan helyezhetek üzembe WAR-fájlt a Maven beépülő modulon keresztül?
Ha a Java Tomcat-projektet a Maven beépülő modullal konfigurálta, ezen a beépülő modulon keresztül is üzembe helyezheti az Azure App Service-ben. Ha az Azure CLI GitHub-műveletet használja, az az Azure-beli hitelesítő adatait használja.
- name: Azure CLI script file
uses: azure/cli@v2
with:
inlineScript: |
mvn package azure-webapp:deploy
A Maven beépülő modul használatáról és konfigurálásáról további információt az Azure App Service-hez készült Maven beépülő modul wikijében talál.
Hogyan helyezhetek üzembe WAR-fájlokat az Azure CLI-vel?
Ha inkább az Azure CLI-t szeretné használni az App Service-ben való üzembe helyezéshez, használhatja az Azure CLI-hez készült GitHub-műveletet.
- 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
Az Azure CLI GitHub-műveletének használatáról és konfigurálásáról további információt az Azure CLI GitHub-műveletében talál.
A paranccsal kapcsolatos további információkért, beleértve annak az webapp deploy használatát és a paraméter részleteit, tekintse meg a dokumentációtaz webapp deploy.
Hogyan helyezhetek üzembe indítási fájlt?
Használja a GitHub-műveletet az Azure CLI-hez. Például:
- 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
Hogyan telepíthetek egy konténerbe?
Az Azure Web Deploy művelettel automatizálhatja a munkafolyamatot, hogy egyéni tárolókat helyezzen üzembe az App Service-ben a GitHub Actions használatával. További információ: Üzembe helyezés tárolóban.
Hogyan helyezhetek üzembe egy üzembehelyezési slotra?
A művelet paraméterével üzembe helyezheti az éles pont helyett egy slot-nameazure/webapps-deploy@v3. Ha egy helyre szeretne telepíteni, adja hozzá a slot-name paramétert a munkafolyamat ütemlésekor a telepítési lépéshez.
- name: Deploy to Azure Web App
uses: azure/webapps-deploy@v3
with:
app-name: 'my-app-name'
slot-name: 'staging' # Deploy to the 'staging' slot instead of production
package: './output'
Note
OpenID Connect vagy szolgáltatás főhitelesítés használata esetén győződjön meg arról, hogy az identitás rendelkezik a webhely-hozzájáruló szerepkörével mind az alkalmazáson, mind a telepítési példányon. A közzétételi profil hitelesítéséhez töltse le az adott ponthoz tartozó közzétételi profilt az Azure Portalról (az üzembehelyezési>pontok> közül válassza ki a > pontot).
Hogyan frissíthetem a Tomcat-konfigurációt az üzembe helyezés után?
Ha az üzembe helyezés után bármelyik webalkalmazás-beállítást frissíteni szeretné, használhatja az App Service beállítási műveletét.
- 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
A művelet használatáról és konfigurálásáról további információt az App Service beállítási adattárában talál.
Kapcsolódó tartalom
Tekintse meg a következő hivatkozásokat az Azure GitHub Actions és munkafolyamatok esetében: