A GitHub Actions üzembe helyezésének beállítása az alkalmazás létrehozásakor
A GitHub Actions üzembe helyezése integrálva van az alapértelmezett alkalmazáslétrehozó varázslóba. Csak be kell állítania a folyamatos üzembe helyezéstaz Üzembe helyezés lapon engedélyezve , és konfigurálnia kell a kívánt szervezetet, adattárat és ágat.
A folyamatos üzembe helyezés engedélyezésekor az alkalmazáslétrehozási varázsló 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ében az App Service Deployment Center használatával gyorsan megkezdheti a GitHub Actions használatát. Ez a kulcsrakész módszer automatikusan létrehoz egy GitHub Actions-munkafolyamatfájlt az alkalmazásverem alapján, és véglegesíti azt a GitHub-adattárban.
Az Üzembe helyezési központ lehetővé teszi a biztonságosabb OpenID Connect-hitelesítés konfigurálását is a felhasználó által hozzárendelt identitásbeállítással.
Ha az Azure-fiókja rendelkezik a szükséges engedélyekkel, kiválaszthatja, hogy létrehoz-e 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.
A GitHub Actionshez készült Azure-alkalmazás-szolgáltatásokkal való hitelesítés ajánlott módja az OpenID Connect. Ez egy olyan hitelesítési módszer, amely rövid élettartamú jogkivonatokat használ. Az OpenID Connect és a GitHub Actions beállítása összetettebb, de fokozott biztonságot nyújt.
Másik lehetőségként hitelesítést végezhet felhasználó által hozzárendelt felügyelt identitással, szolgáltatásnévvel vagy közzétételi profillal.
Az alábbiakban áttekintheti az Active Directory-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. Az Active Directory-alkalmazás, a szolgáltatásnév és az összevont hitelesítő adatok Azure Portalon való létrehozásáról a GitHub és az Azure csatlakoztatása című témakörben olvashat.
Ez a parancs egy JSON-t appId ad ki, amely 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 értéket a objectId Graph API-val összevont hitelesítő adatok létrehozásakor fogja használni, és hivatkozni fog rá.APPLICATION-OBJECT-ID
Hozzon létre egy szolgáltatásnevet. Cserélje le az $appID appId-et a JSON-kimenetből.
Ez a parancs egy másik objectId JSON-kimenetet hoz létre, és a következő lépésben fogja használni. Az új objectId a assignee-object-id.
Másolja ki a appOwnerTenantId gitHub-titkos kódként való használathoz későbbi használatra AZURE_TENANT_ID .
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át, $resourceGroupName az erőforráscsoport nevét, $webappName a webalkalmazás nevét és $assigneeObjectId a létrehozott idnevet. Megtudhatja , hogyan kezelheti az Azure-előfizetéseket az Azure CLI-vel.
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
Cserélje le APPLICATION-OBJECT-ID az Active Directory-alkalmazáshoz tartozó appId azonosítót (amely az alkalmazás létrehozásakor jön létre).
Adjon meg egy értéket a CREDENTIAL-NAME későbbi hivatkozáshoz.
Állítsa be a subject. Értékét a GitHub határozza meg a munkafolyamattól függően:
Feladatok a GitHub Actions-környezetben: repo:< Organization/Repository >:environment:< Name >
A környezethez nem kapcsolódó feladatok esetében adja meg az ág/címke hiv elérési útját a munkafolyamat aktiválásához használt hiv elérési út 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.
Lekéréses kérelem esemény által aktivált munkafolyamatok eseté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"
]
}
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 lekérése lehetőséget.
Mentse a letöltött fájlt. A fájl tartalmával létrehoz egy GitHub-titkos kulcsot.
Feljegyzés
2020 októberétől a Linux-webalkalmazások a közzétételi profil letöltése előtt meg kell adni az alkalmazásbeállítást WEBSITE_WEBDEPLOY_USE_SCMtrue. Ez a követelmény a jövőben megszűnik.
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
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, amelynek szerepkör-hozzárendelési hitelesítő adatai az alábbi JSON-kódrészlethez hasonló hozzáférést biztosítanak az App Service-alkalmazáshoz. Másolja ezt a JSON-objektumot későbbre.
Mindig ajánlott minimális hozzáférést biztosítani. 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 az Azure/login művelethez. Ezek az értékek közvetlenül a munkafolyamatban is megadhatóak, vagy a GitHub titkos kulcsaiban tárolhatók, és a munkafolyamatban hivatkozhatnak gombra. 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 műveletei > 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 (bérlő) azonosítója
AZURE_SUBSCRIPTION_ID
Előfizetés azonosítója
Mentse az egyes titkos kulcsokat a Titkos kód hozzáadása gombra kattintva.
A GitHubon tallózzon az adattárban. Válassza a Beállítások biztonsági titkos kulcsok és változók > – Új adattár titkos műveletei > lehetőséget.> >
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ékmezőbe. Nevezze el a titkos kulcsot AZURE_WEBAPP_PUBLISH_PROFILE.
Amikor később konfigurálja a GitHub-munkafolyamatfájlt, az AZURE_WEBAPP_PUBLISH_PROFILE Azure Web App üzembe helyezéséhez használja. Példa:
A GitHubon tallózzon az adattárban. Válassza a Beállítások biztonsági titkos kulcsok és változók > – Új adattár titkos műveletei > lehetőséget.> >
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.
Amikor később konfigurálja a GitHub-munkafolyamatfájlt, a titkos kulcsot használja az Azure/login bemenetéhezcreds. Példa:
3. Adja hozzá a munkafolyamat-fájlt a GitHub-adattárhoz
A munkafolyamatokat egy YAML-fájl (.yml) határozza meg a /.github/workflows/ GitHub-adattár elérési útján. 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.
Ha a kódot egy App Service-alkalmazásban szeretné üzembe helyezni, használja az azure/webapps-deploy@v3 műveletet. A művelethez meg kell adni a webalkalmazás app-name nevét, és a nyelvi veremtől függően egy *.zip, *.war, *.jar vagy mappa elérési útját.package A művelet lehetséges bemeneteinek azure/webapps-deploy@v3 teljes listáját a action.yml definícióban találja.
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@v1 műveletet a client-id, tenant-idés subscription-id a kulcsokkal, és 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:
# Checkout the repo
- uses: actions/checkout@main
- uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
# Setup .NET Core SDK
- name: Setup .NET Core
uses: actions/setup-dotnet@v3
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
# Run dotnet build and publish
- name: dotnet build and publish
run: |
dotnet restore
dotnet build --configuration Release
dotnet publish -c Release --property:PublishDir='${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp'
# Deploy to Azure Web apps
- name: 'Run Azure webapp deploy action using publish profile credentials'
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }} # Replace with your app name
package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp'
- name: logout
run: |
az logout
ASP.NET MVC-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 , tenant-idés subscription-id értékekhezclient-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:
# 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
Java Spring-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 , tenant-idés subscription-id értékekhezclient-id. Ezeket az értékeket közvetlenül a bejelentkezési műveletben is átadhatja.
name: Build and deploy WAR app to Azure Web App using OpenID Connect
env:
JAVA_VERSION: '11' # set this to the Java version to use
DISTRIBUTION: microsoft # set this to the Java distribution
AZURE_WEBAPP_NAME: sampleapp # set this to the name of your web app
on: [push]
permissions:
id-token: write
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Java version
uses: actions/setup-java@v3.0.0
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: ${{ env.DISTRIBUTION }}
cache: 'maven'
- name: Build with Maven
run: mvn clean install
- name: Login to Azure
uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Deploy to Azure Web App
id: deploy-to-webapp
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
package: '*.war'
name: JavaScript CI
on: [push]
permissions:
id-token: write
contents: read
name: Node.js
env:
AZURE_WEBAPP_NAME: my-app # set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: 'my-app-path' # set this to the path to your web app project, defaults to the repository root
NODE_VERSION: '18.x' # set this to the node version to use
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
# checkout the repo
- name: 'Checkout GitHub Action'
uses: actions/checkout@main
- uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Setup Node ${{ env.NODE_VERSION }}
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: 'npm install, build, and test'
run: |
npm install
npm run build --if-present
npm run test --if-present
working-directory: my-app-path
# deploy web app using Azure credentials
- uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}
# Azure logout
- name: logout
run: |
az logout
name: Python application
on:
[push]
permissions:
id-token: write
contents: read
env:
AZURE_WEBAPP_NAME: my-app # set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: '.' # set this to the path to your web app project, defaults to the repository root
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Set up Python 3.x
uses: actions/setup-python@v4
with:
python-version: 3.x
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Deploy web App using GH Action azure/webapps-deploy
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}
- name: logout
run: |
az logout
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'
NuGetet és hitelesítést használó ASP.NET 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-alkalmazás létrehozása és üzembe helyezése az Azure-ban egy Azure-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
Ha egy helyett jaregy war elemet szeretne üzembe helyezni, módosítsa az package értéket.
Tomcat-alkalmazás létrehozása és üzembe helyezése az Azure-ban egy Azure-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'
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: '18.x' # set this to the node version to use
jobs:
build-and-deploy:
name: Build and Deploy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@main
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: npm install, build, and test
run: |
# Build and test the project, then
# deploy to Azure Web App.
npm install
npm run build --if-present
npm run test --if-present
working-directory: my-app-path
- name: 'Deploy to Azure WebApp'
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}
Python-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 bemenet hogyan publish-profile hivatkozik a AZURE_WEBAPP_PUBLISH_PROFILE korábban létrehozott titkos kódra.
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@v1 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:
# Checkout the repo
- uses: actions/checkout@main
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
# Setup .NET Core SDK
- name: Setup .NET Core
uses: actions/setup-dotnet@v3
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
# Run dotnet build and publish
- name: dotnet build and publish
run: |
dotnet restore
dotnet build --configuration Release
dotnet publish -c Release --property:PublishDir='${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp'
# Deploy to Azure Web apps
- name: 'Run Azure webapp deploy action using Azure Credentials'
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }} # Replace with your app name
package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp'
- name: logout
run: |
az logout
ASP.NET MVC-alkalmazás létrehozása és üzembe helyezése az Azure-ban egy Azure-szolgáltatásnév használatával. Figyelje meg, hogy a bemenet hogyan creds hivatkozik a AZURE_CREDENTIALS korábban létrehozott titkos kódra.
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
Java Spring-alkalmazás létrehozása és üzembe helyezése az Azure-ban egy Azure-szolgáltatásnév használatával. Figyelje meg, hogy a bemenet hogyan creds hivatkozik a AZURE_CREDENTIALS korábban létrehozott titkos kódra.
name: Java CI with Maven
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Set up JDK 1.8
uses: actions/setup-java@v3
with:
java-version: 1.8
- name: Build with Maven
run: mvn -B package --file pom.xml
working-directory: complete
- name: Azure WebApp
uses: Azure/webapps-deploy@v3
with:
app-name: my-app-name
package: my/target/*.jar
# Azure logout
- name: logout
run: |
az logout
Tomcat-alkalmazás létrehozása és üzembe helyezése az Azure-ban egy Azure-szolgáltatásnév használatával. Figyelje meg, hogy a bemenet hogyan creds hivatkozik a AZURE_CREDENTIALS korábban létrehozott titkos kódra.
name: Build and deploy WAR app to Azure Web App using Service Principal Connect
env:
JAVA_VERSION: '11' # set this to the Java version to use
DISTRIBUTION: microsoft # set this to the Java distribution
AZURE_WEBAPP_NAME: sampleapp # set this to the name of your web app
on: [push]
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Java version
uses: actions/setup-java@v3.0.0
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: ${{ env.DISTRIBUTION }}
cache: 'maven'
- name: Build with Maven
run: mvn clean install
- name: Login to Azure
uses: azure/login@v2
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Deploy to Azure Web App
id: deploy-to-webapp
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
package: '*.war'
Node.js-alkalmazás létrehozása és üzembe helyezése az Azure-ban egy Azure-szolgáltatásnév használatával. Figyelje meg, hogy a bemenet hogyan creds hivatkozik a AZURE_CREDENTIALS korábban létrehozott titkos kódra.
name: JavaScript CI
on: [push]
name: Node.js
env:
AZURE_WEBAPP_NAME: my-app # set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: 'my-app-path' # set this to the path to your web app project, defaults to the repository root
NODE_VERSION: '18.x' # set this to the node version to use
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
# checkout the repo
- name: 'Checkout GitHub Action'
uses: actions/checkout@main
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Setup Node ${{ env.NODE_VERSION }}
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: 'npm install, build, and test'
run: |
npm install
npm run build --if-present
npm run test --if-present
working-directory: my-app-path
# deploy web app using Azure credentials
- uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}
# Azure logout
- name: logout
run: |
az logout
Python-alkalmazás létrehozása és üzembe helyezése az Azure-ban egy Azure-szolgáltatásnév használatával. Figyelje meg, hogy a bemenet hogyan creds hivatkozik a AZURE_CREDENTIALS korábban létrehozott titkos kódra.
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
Az Azure CLI GitHub-műveletében további információk találhatók a GitHub parancssori felülethez készült műveletéről, valamint annak használatáról és konfigurálásáról.
Az az webapp deploy parancsról, a használat módjáról és a paraméter részleteiről az az webapp üzembe helyezési dokumentációjában talál további információt.
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. A GitHub Actions használatával történő üzembe helyezés lépéseire vonatkozó részletes információk a Tárolón való üzembe helyezésben találhatók.
Hogyan frissíteni 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ások műveletet.
- 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
Erről a műveletről és annak használatáról és konfigurálásáról az App Service-beállítások adattárban talál további információt.
Következő lépések
Tekintse meg az Azure GitHub Actions és munkafolyamatok hivatkozásait: