Konfigurera GitHub Actions-distribution när du skapar appen
GitHub Actions-distributionen är integrerad i standardprocessen Skapa webbapp. Ange Kontinuerlig distribution till Aktivera på fliken Distribution och konfigurera den organisation, lagringsplats och gren som du vill använda.
När du aktiverar kontinuerlig distribution väljer appskapandet automatiskt autentiseringsmetoden baserat på det grundläggande autentiseringsvalet och konfigurerar din app och din GitHub-lagringsplats i enlighet med detta:
Konfigurera GitHub Actions-distribution från Distributionscenter
För en befintlig app kan du komma igång snabbt med GitHub Actions med hjälp av App Service Deployment Center. Den här nyckelnyckelmetoden genererar en GitHub Actions-arbetsflödesfil baserat på din programstack och checkar in den på din GitHub-lagringsplats.
Med Distributionscenter kan du också enkelt konfigurera den säkrare OpenID Connect-autentiseringen med en användartilldelad identitet. Mer information finns i alternativet användartilldelad identitet.
Om ditt Azure-konto har de behörigheter som krävs kan du skapa en användartilldelad identitet. Annars kan du välja en befintlig användartilldelad hanterad identitet i listrutan Identitet . Du kan samarbeta med Azure-administratören för att skapa en användartilldelad hanterad identitet med rollen Webbplatsdeltagare.
Det rekommenderade sättet att autentisera med Azure App Services för GitHub Actions är med OpenID Connect. Den här metoden är en autentiseringsmetod som använder kortlivade token. Att konfigurera OpenID Connect med GitHub Actions är mer komplext men ger förstärkt säkerhet.
Du kan också autentisera med en användartilldelad hanterad identitet, ett huvudnamn för tjänsten eller en publiceringsprofil.
Följande procedur beskriver stegen för att skapa ett Active Directory-program, tjänstens huvudnamn och federerade autentiseringsuppgifter med hjälp av Azure CLI-instruktioner. Information om hur du skapar ett Active Directory-program, tjänstens huvudnamn och federerade autentiseringsuppgifter i Azure Portal finns i Ansluta GitHub och Azure.
Det här kommandot returnerar en JSON med en appId som är din client-id. Spara värdet som ska användas som AZURE_CLIENT_ID GitHub-hemlighet senare.
Du använder värdet objectId när du skapar federerade autentiseringsuppgifter med Graph API och refererar till det som APPLICATION-OBJECT-ID.
Skapa ett huvudnamn för tjänsten. $appID Ersätt med appId från dina JSON-utdata.
Det här kommandot genererar JSON-utdata med en annan objectId att använda i nästa steg. Den nya objectId är assignee-object-id.
Kopiera som appOwnerTenantId ska användas som en GitHub-hemlighet för AZURE_TENANT_ID senare.
az ad sp create --id $appId
Skapa en ny rolltilldelning efter prenumeration och objekt. Som standard är rolltilldelningen kopplad till din standardprenumeration. Ersätt $subscriptionId med ditt prenumerations-ID, $resourceGroupName med resursgruppens namn, $webappName med webbappens namn och $assigneeObjectId med det genererade id. Lär dig hur du hanterar Azure-prenumerationer med 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
Ersätt APPLICATION-OBJECT-ID med appId (genereras när du skapar appen) för ditt Active Directory-program.
Ange ett värde som CREDENTIAL-NAME ska refereras senare.
subjectAnge . GitHub definierar dess värde beroende på ditt arbetsflöde:
För jobb i din GitHub Actions-miljö: repo:< Organization/Repository >:environment:< Name >
För Jobb som inte är knutna till en miljö inkluderar du referenssökvägen för gren/tagg baserat på referenssökvägen som används för att utlösa arbetsflödet: repo:< Organization/Repository >:ref:< ref path>. Exempel: repo:n-username/ node_express:ref:refs/heads/my-branch eller repo:n-username/ node_express:ref:refs/tags/my-tag.
För arbetsflöden som utlöses av en pull-begärandehändelse: 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"
]
}
En publiceringsprofil är en autentiseringsuppgift på appnivå. Konfigurera din publiceringsprofil som en GitHub-hemlighet.
Gå till apptjänsten i Azure Portal.
På sidan Översikt väljer du Ladda ned publiceringsprofil.
Spara den nedladdade filen. Använd innehållet i filen för att skapa en GitHub-hemlighet.
Kommentar
Från och med oktober 2020 behöver Linux-webbappar appinställningen WEBSITE_WEBDEPLOY_USE_SCM inställd truepå innan publiceringsprofilen laddas ned. Det här kravet tas bort i framtiden.
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
I föregående exempel ersätter du platshållarna med ditt prenumerations-ID, resursgruppsnamn och appnamn. Utdata är ett JSON-objekt med autentiseringsuppgifterna för rolltilldelning som ger åtkomst till din App Service-app som liknar följande JSON-kodfragment. Kopiera det här JSON-objektet för senare.
Det är alltid en bra idé att bevilja minsta möjliga åtkomst. Omfånget i föregående exempel är begränsat till den specifika App Service-appen och inte hela resursgruppen.
Du måste ange programmets klient-ID, klient-ID och prenumerations-IDtill azure-/inloggningsåtgärden. Dessa värden kan antingen anges direkt i arbetsflödet eller lagras i GitHub-hemligheter och refereras till i arbetsflödet. Att spara värdena som GitHub-hemligheter är det säkrare alternativet.
Öppna din GitHub-lagringsplats och gå till Inställningar>Säkerhetshemligheter>och variabler>Åtgärder>Ny lagringsplatshemlighet.
Skapa hemligheter för AZURE_CLIENT_ID, AZURE_TENANT_IDoch AZURE_SUBSCRIPTION_ID. Använd dessa värden från ditt Active Directory-program för dina GitHub-hemligheter:
GitHub-hemlighet
Active Directory-program
AZURE_CLIENT_ID
App-ID (klient-ID)
AZURE_TENANT_ID
Katalog-ID (klientorganisation)
AZURE_SUBSCRIPTION_ID
Prenumerations-ID:t
Spara varje hemlighet genom att välja Lägg till hemlighet.
I GitHub bläddrar du till din lagringsplats. Välj Inställningar Säkerhetshemligheter>>och variabler>Åtgärder>Ny lagringsplatshemlighet.
Om du vill använda autentiseringsuppgifter på appnivå som du skapade i föregående avsnitt klistrar du in innehållet i den nedladdade publiceringsprofilfilen i hemlighetens värdefält. Ge hemligheten AZURE_WEBAPP_PUBLISH_PROFILEnamnet .
När du konfigurerar GitHub-arbetsflödesfilen senare använder du AZURE_WEBAPP_PUBLISH_PROFILE i åtgärden distribuera Azure Web App. Till exempel:
I GitHub bläddrar du till din lagringsplats. Välj Inställningar Säkerhetshemligheter>>och variabler>Åtgärder>Ny lagringsplatshemlighet.
Om du vill använda autentiseringsuppgifter på användarnivå som du skapade i föregående avsnitt klistrar du in hela JSON-utdata från Azure CLI-kommandot i hemlighetens värdefält. Ge hemligheten AZURE_CREDENTIALSnamnet .
När du konfigurerar GitHub-arbetsflödesfilen senare använder du hemligheten för indata creds från Azure/login. Till exempel:
Lägg till arbetsflödesfilen på din GitHub-lagringsplats
En YAML-fil (.yml) i /.github/workflows/ sökvägen i din GitHub-lagringsplats definierar ett arbetsflöde. Den här definitionen innehåller de olika steg och parametrar som utgör arbetsflödet.
Arbetsflödesfilen har minst följande distinkta steg:
Autentisera med App Service med hjälp av GitHub-hemligheten som du skapade.
Skapa webbappen.
Distribuera webbappen.
Om du vill distribuera din kod till en App Service-app använder du åtgärden azure/webapps-deploy@v3 . Åtgärden kräver namnet på webbappen i app-name och, beroende på din språkstack, sökvägen till en *.zip, *.war, *.jar eller mapp som ska distribueras i package. En fullständig lista över möjliga indata för åtgärden finns i azure/webapps-deploy@v3 action.yml.
I följande exempel visas den del av arbetsflödet som skapar webbappen på olika språk som stöds.
Om du vill distribuera med OpenID Connect med den hanterade identitet som du konfigurerade använder azure/login@v1 du åtgärden med client-idnycklarna , tenant-idoch subscription-id . Referera till De GitHub-hemligheter som du skapade tidigare.
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
Skapa och distribuera en ASP.NET MVC-app till Azure med azure-tjänstens huvudnamn. I exemplet används GitHub-hemligheter för client-idvärdena , tenant-idoch subscription-id . Du kan också skicka dessa värden direkt i inloggningsåtgärden.
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
Skapa och distribuera en Java Spring-app till Azure med hjälp av ett Huvudnamn för Azure-tjänsten. I exemplet används GitHub-hemligheter för client-idvärdena , tenant-idoch subscription-id . Du kan också skicka dessa värden direkt i inloggningsåtgärden.
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'
Du hittar det här fullständiga exemplet med flera jobb för att skapa och distribuera.
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
Indata publish-profile bör referera till GitHub-hemligheten AZURE_WEBAPP_PUBLISH_PROFILE som du skapade tidigare.
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'
Skapa och distribuera en ASP.NET MVC-app som använder NuGet och publish-profile för autentisering.
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/'
Skapa och distribuera en Java Spring-app till Azure med hjälp av en Azure-publiceringsprofil. Indata publish-profile refererar till hemligheten AZURE_WEBAPP_PUBLISH_PROFILE som du skapade tidigare.
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
Om du vill distribuera en war i stället för en jarändrar du värdet package .
Skapa och distribuera en Tomcat-app till Azure med hjälp av en Azure-publiceringsprofil. Indata publish-profile refererar till hemligheten AZURE_WEBAPP_PUBLISH_PROFILE som du skapade tidigare.
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'
Du hittar det här fullständiga exemplet med flera jobb för att skapa och distribuera.
Skapa och distribuera en Node.js app till Azure med hjälp av appens publiceringsprofil. Indata publish-profile refererar till hemligheten AZURE_WEBAPP_PUBLISH_PROFILE som du skapade tidigare.
# 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 }}
Skapa och distribuera en Python-app till Azure med appens publiceringsprofil. Observera hur publish-profile indata refererar till hemligheten AZURE_WEBAPP_PUBLISH_PROFILE som du skapade tidigare.
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 }}
Om du vill distribuera med tjänstens huvudnamn som du konfigurerade använder azure/login@v1 du åtgärden med creds nyckeln och refererar till hemligheten AZURE_CREDENTIALS som du skapade tidigare.
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
Skapa och distribuera en ASP.NET MVC-app till Azure med azure-tjänstens huvudnamn. Indata creds refererar till hemligheten AZURE_CREDENTIALS som du skapade tidigare.
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
Skapa och distribuera en Java Spring-app till Azure med hjälp av ett Huvudnamn för Azure-tjänsten. Indata creds refererar till hemligheten AZURE_CREDENTIALS som du skapade tidigare.
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
Skapa och distribuera en Tomcat-app till Azure med hjälp av ett Huvudnamn för Azure-tjänsten. Indata creds refererar till hemligheten AZURE_CREDENTIALS som du skapade tidigare.
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'
Du hittar det här fullständiga exemplet med flera jobb för att skapa och distribuera.
Skapa och distribuera en Node.js-app till Azure med hjälp av ett Huvudnamn för Azure-tjänsten. Indata creds refererar till hemligheten AZURE_CREDENTIALS som du skapade tidigare.
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
Skapa och distribuera en Python-app till Azure med hjälp av ett huvudnamn för Azure-tjänsten. Indata creds refererar till hemligheten AZURE_CREDENTIALS som du skapade tidigare.
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
Hur gör jag för att distribuera en WAR-fil via Maven-plugin-programmet?
Om du har konfigurerat ditt Java Tomcat-projekt med Maven-plugin-programmet kan du även distribuera till Azure App Service via det här plugin-programmet. Om du använder Azure CLI GitHub-åtgärden använder den dina Azure-autentiseringsuppgifter.
Hur gör jag för att distribuera till en container?
Med åtgärden Azure Web Deploy kan du automatisera arbetsflödet för att distribuera anpassade containrar till App Service med GitHub Actions. Mer information om hur du distribuerar med GitHub Actions finns i Distribuera till en container.
Hur gör jag för att uppdatera Tomcat-konfigurationen efter distributionen?
- 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
Mer information om den här åtgärden och hur du använder och konfigurerar den finns i lagringsplatsen För App Service-inställningar .
Relaterat innehåll
Kolla in referenser på Azure GitHub Actions och arbetsflöden: