Az Azure Spring Apps CI/CD használata a GitHub Actions használatával
Feljegyzés
Az Alapszintű, a Standard és a Nagyvállalati csomag 2025. március közepétől megszűnik, 3 éves nyugdíjazási időszakkal. Javasoljuk, hogy váltson az Azure Container Appsre. További információkért lásd az Azure Spring Apps kivonási bejelentését.
A standard felhasználás és a dedikált csomag 2024. szeptember 30-tól megszűnik, hat hónap után pedig teljes leállítással. Javasoljuk, hogy váltson az Azure Container Appsre. További információ: Azure Spring Apps Standard-használat migrálása és dedikált csomag az Azure Container Appsbe.
Ez a cikk a következőre vonatkozik: ✔️ Basic/Standard ✔️ Enterprise
Ez a cikk bemutatja, hogyan hozhat létre CI/CD-munkafolyamatot az Azure Spring Appshez a GitHub Actions használatával.
A GitHub Actions egy automatizált szoftverfejlesztési életciklus-munkafolyamatot támogat. Az Azure Spring Appshez készült GitHub Actions segítségével munkafolyamatokat hozhat létre az adattárban az Azure-ban való létrehozáshoz, teszteléshez, csomagoláshoz, kiadáshoz és üzembe helyezéshez.
Előfeltételek
Ehhez a példához az Azure CLI szükséges.
A GitHub-adattár beállítása és hitelesítése
Azure-szolgáltatásnév hitelesítő adataira van szüksége az Azure bejelentkezési művelet engedélyezéséhez. Azure-hitelesítő adatok beszerzéséhez hajtsa végre a következő parancsokat a helyi gépen:
az login
az ad sp create-for-rbac \
--role contributor \
--scopes /subscriptions/<SUBSCRIPTION_ID> \
--json-auth
Egy adott erőforráscsoporthoz való hozzáféréshez csökkentheti a hatókört:
az ad sp create-for-rbac \
--role contributor \
--scopes /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP> \
--json-auth
A parancsnak ki kell kimenete egy JSON-objektumot:
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
...
}
Ez a példa a GitHub acéltómintáját használja. Az adattár elágazása, az elágazáshoz tartozó GitHub-adattár lap megnyitása, majd a Beállítások lap kiválasztása. Nyissa meg a Titkos kódok menüt, és válassza az Új titkos kód lehetőséget:
Állítsa be a titkos kód nevét AZURE_CREDENTIALS
és értékét a GitHub-adattár beállítása és hitelesítése című címsorban található JSON-sztringre.
Az Azure bejelentkezési hitelesítő adatait a GitHub ActionsBen található Key Vaultból is beszerezheti az Azure Spring hitelesítése a GitHub Actionsben található Key Vault használatával című témakörben leírtak szerint.
Szolgáltatáspéldány kiépítése
Az Azure Spring Apps szolgáltatáspéldány üzembe helyezéséhez futtassa az alábbi parancsokat az Azure CLI használatával.
az extension add --name spring
az group create \
--name <resource-group-name> \
--location eastus
az spring create \
--resource-group <resource-group-name> \
--name <service-instance-name>
az spring config-server git set \
--name <service-instance-name> \
--uri https://github.com/Azure-Samples/azure-spring-apps-samples \
--label main \
--search-paths steeltoe-sample/config
A munkafolyamat létrehozása
A munkafolyamat a következő beállításokkal van definiálva.
Felkészülés az üzembe helyezésre az Azure CLI-vel
A parancs az spring app create
jelenleg nem idempotens. Miután egyszer futtatta, hibaüzenet jelenik meg, ha ugyanazt a parancsot futtatja újra. Ezt a munkafolyamatot a meglévő Azure Spring Apps-alkalmazásokban és -példányokban javasoljuk.
Az előkészítéshez használja az alábbi Azure CLI-parancsokat:
az config set defaults.group=<service-group-name>
az config set defaults.spring=<service-instance-name>
az spring app create --name planet-weather-provider
az spring app create --name solar-system-weather
Üzembe helyezés közvetlenül az Azure CLI-vel
Hozza létre a .github/workflows/main.yml fájlt az adattárban az alábbi tartalommal. Cserélje le <az erőforráscsoport nevét> és <a szolgáltatásnevet> a megfelelő értékekre.
name: Steeltoe-CD
# Controls when the action runs. Triggers the workflow on push or pull request
# events but only for the main branch
on:
push:
branches: [ main]
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job runs on
runs-on: ubuntu-latest
env:
working-directory: ./steeltoe-sample
resource-group-name: <your resource group name>
service-name: <your service name>
# Supported .NET Core version matrix.
strategy:
matrix:
dotnet: [ '3.1.x' ]
# Steps represent a sequence of tasks that is executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
# Set up .NET Core 3.1 SDK
- uses: actions/setup-dotnet@v1
with:
dotnet-version: ${{ matrix.dotnet }}
# Set credential for az login
- uses: azure/login@v1.1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: install Azure CLI extension
run: |
az extension add --name spring --yes
- name: Build and package planet-weather-provider app
working-directory: ${{env.working-directory}}/src/planet-weather-provider
run: |
dotnet publish
az spring app deploy -n planet-weather-provider --runtime-version NetCore_31 --main-entry Microsoft.Azure.SpringCloud.Sample.PlanetWeatherProvider.dll --artifact-path ./publish-deploy-planet.zip -s ${{ env.service-name }} -g ${{ env.resource-group-name }}
- name: Build solar-system-weather app
working-directory: ${{env.working-directory}}/src/solar-system-weather
run: |
dotnet publish
az spring app deploy -n solar-system-weather --runtime-version NetCore_31 --main-entry Microsoft.Azure.SpringCloud.Sample.SolarSystemWeather.dll --artifact-path ./publish-deploy-solar.zip -s ${{ env.service-name }} -g ${{ env.resource-group-name }}
A GitHub-adattár beállítása és hitelesítése
Azure-szolgáltatásnév hitelesítő adataira van szüksége az Azure bejelentkezési művelet engedélyezéséhez. Azure-hitelesítő adatok beszerzéséhez hajtsa végre a következő parancsokat a helyi gépen:
az login
az ad sp create-for-rbac \
--role contributor \
--scopes /subscriptions/<SUBSCRIPTION_ID> \
--json-auth
Egy adott erőforráscsoporthoz való hozzáféréshez csökkentheti a hatókört:
az ad sp create-for-rbac \
--role contributor \
--scopes /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP> \
--json-auth
A parancsnak ki kell kimenete egy JSON-objektumot:
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
...
}
Ez a példa a GitHub PiggyMetrics mintáját használja. Fork the sample, uncheck Copy the Azure branch only, open the GitHub repository page, and select the Settings tab. Open Secrets menu, and select Add a new secret:
Állítsa be a titkos kód nevét AZURE_CREDENTIALS
és értékét a GitHub-adattár beállítása és hitelesítése című címsorban található JSON-sztringre.
Az Azure bejelentkezési hitelesítő adatait a GitHub ActionsBen található Key Vaultból is beszerezheti az Azure Spring hitelesítése a GitHub Actionsben található Key Vault használatával című témakörben leírtak szerint.
Szolgáltatáspéldány kiépítése
Az Azure Spring Apps szolgáltatáspéldány üzembe helyezéséhez futtassa az alábbi parancsokat az Azure CLI használatával.
az extension add --name spring
az group create --location eastus --name <resource group name>
az spring create -n <service instance name> -g <resource group name>
az spring config-server git set -n <service instance name> --uri https://github.com/xxx/piggymetrics --label config
Végpontok közötti minta-munkafolyamatok
Az alábbi példák a gyakori használati forgatókönyveket mutatják be.
Üzembe helyezés
Az alábbi szakaszok az alkalmazás üzembe helyezésének különböző lehetőségeit mutatják be.
Éles környezetbe
Az Azure Spring Apps támogatja az üzembe helyezést beépített összetevőkkel (például JAR vagy .NET Core ZIP) vagy forráskódarchívummal.
Az alábbi példa a Maven által létrehozott JAR-fájl használatával települ az Azure Spring Apps alapértelmezett éles üzembe helyezésére. Ez a példa az egyetlen lehetséges üzembehelyezési forgatókönyv az alapszintű termékváltozat használatakor:
Feljegyzés
A csomagkeresési mintának csak egy csomagot kell visszaadnia. Ha a buildelési feladat több JAR-csomagot hoz létre, például sources.jar és javadoc.jar, pontosítania kell a keresési mintát, hogy az csak az alkalmazás bináris összetevőjének feleljen meg.
name: AzureSpringApps
on: push
env:
ASC_PACKAGE_PATH: ${{ github.workspace }}
AZURE_SUBSCRIPTION: <azure subscription name>
jobs:
deploy_to_production:
runs-on: ubuntu-latest
name: deploy to production with artifact
steps:
- name: Checkout GitHub Action
uses: actions/checkout@v2
- name: Set up Java 11
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '11'
- name: maven build, clean
run: |
mvn clean package
- name: Login via Azure CLI
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: deploy to production with artifact
uses: azure/spring-apps-deploy@v1
with:
azure-subscription: ${{ env.AZURE_SUBSCRIPTION }}
action: Deploy
service-name: <service instance name>
app-name: <app name>
use-staging-deployment: false
package: ${{ env.ASC_PACKAGE_PATH }}/**/*.jar
Az alábbi példa forráskód használatával telepítheti az Azure Spring Apps alapértelmezett éles üzembe helyezését.
name: AzureSpringApps
on: push
env:
ASC_PACKAGE_PATH: ${{ github.workspace }}
AZURE_SUBSCRIPTION: <azure subscription name>
jobs:
deploy_to_production:
runs-on: ubuntu-latest
name: deploy to production with source code
steps:
- name: Checkout GitHub Action
uses: actions/checkout@v2
- name: Login via Azure CLI
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: deploy to production step with source code
uses: azure/spring-apps-deploy@v1
with:
azure-subscription: ${{ env.AZURE_SUBSCRIPTION }}
action: deploy
service-name: <service instance name>
app-name: <app name>
use-staging-deployment: false
package: ${{ env.ASC_PACKAGE_PATH }}
Az alábbi példa az Azure Spring Apps alapértelmezett éles üzembe helyezésére helyezi üzembe a Nagyvállalati csomag forráskódját használva. A beállítással megadhatja, hogy melyik szerkesztőt használja a builder
műveletek üzembe helyezéséhez.
name: AzureSpringApps
on: push
env:
ASC_PACKAGE_PATH: ${{ github.workspace }}
AZURE_SUBSCRIPTION: <azure subscription name>
jobs:
deploy_to_production:
runs-on: ubuntu-latest
name: deploy to production with source code
steps:
- name: Checkout GitHub Action
uses: actions/checkout@v2
- name: Login via Azure CLI
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: deploy to production step with source code in the Enterprise plan
uses: azure/spring-apps-deploy@v1
with:
azure-subscription: ${{ env.AZURE_SUBSCRIPTION }}
action: deploy
service-name: <service instance name>
app-name: <app name>
use-staging-deployment: false
package: ${{ env.ASC_PACKAGE_PATH }}
builder: <builder>
Az alábbi példa az Azure Spring Apps alapértelmezett éles üzembe helyezésére helyez üzembe egy meglévő tárolórendszerképet.
name: AzureSpringApps
on: push
env:
ASC_PACKAGE_PATH: ${{ github.workspace }}
AZURE_SUBSCRIPTION: <azure subscription name>
jobs:
deploy_to_production:
runs-on: ubuntu-latest
name: deploy to production with source code
steps:
- name: Checkout GitHub Action
uses: actions/checkout@v2
- name: Login via Azure CLI
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Deploy Custom Image
uses: Azure/spring-apps-deploy@v1
with:
azure-subscription: ${{ env.AZURE_SUBSCRIPTION }}
action: deploy
service-name: <service instance name>
app-name: <app name>
deployment-name: <deployment name>
container-registry: <your container image registry>
registry-username: ${{ env.REGISTRY_USERNAME }}
registry-password: ${{ secrets.REGISTRY_PASSWORD }}
container-image: <your image tag>
Az üzembe helyezés során több funkciót érhet el több argumentum használatával. További információkért tekintse meg a GitHub Action Argumentumok szakaszát az Azure Spring Appsben való üzembe helyezéshez.
Kék-zöld
Az alábbi példák egy meglévő előkészítési üzembe helyezésre telepítendők. Ez az üzembe helyezés csak akkor kapja meg az éles forgalmat, ha éles üzembe helyezésként van beállítva. A use-staging-deployment igaz beállításával automatikusan megtalálhatja az átmeneti üzembe helyezést, vagy egyszerűen lefoglalhat egy adott üzembe helyezési nevet. Csak a spring-apps-deploy
cselekvésre összpontosítunk, és a cikk többi részében kihagyjuk az előkészítő feladatokat.
# environment preparation configurations omitted
steps:
- name: blue green deploy step use-staging-deployment
uses: azure/spring-apps-deploy@v1
with:
azure-subscription: ${{ env.AZURE_SUBSCRIPTION }}
action: deploy
service-name: <service instance name>
app-name: <app name>
use-staging-deployment: true
package: ${{ env.ASC_PACKAGE_PATH }}/**/*.jar
# environment preparation configurations omitted
steps:
- name: blue green deploy step with deployment-name
uses: azure/spring-apps-deploy@v1
with:
azure-subscription: ${{ env.AZURE_SUBSCRIPTION }}
action: deploy
service-name: <service instance name>
app-name: <app name>
deployment-name: staging
package: ${{ env.ASC_PACKAGE_PATH }}/**/*.jar
A kék-zöld üzembe helyezésekkel kapcsolatos további információkért, beleértve az alternatív megközelítést is, tekintse meg a kék-zöld üzembe helyezési stratégiákat.
Éles üzembe helyezés beállítása
Az alábbi példa az aktuális előkészítési üzembe helyezést állítja be éles környezetként, hatékonyan felcserélve, hogy melyik üzemelő példány fogadja az éles forgalmat.
# environment preparation configurations omitted
steps:
- name: set production deployment step
uses: azure/spring-apps-deploy@v1
with:
azure-subscription: ${{ env.AZURE_SUBSCRIPTION }}
action: set-production
service-name: <service instance name>
app-name: <app name>
use-staging-deployment: true
Átmeneti üzembe helyezés törlése
A Delete Staging Deployment
művelet lehetővé teszi az éles forgalmat nem fogadó üzemelő példány törlését. Ez a törlés felszabadítja az üzembe helyezés által használt erőforrásokat, és helyet biztosít az új átmeneti üzembe helyezésnek:
# environment preparation configurations omitted
steps:
- name: Delete staging deployment step
uses: azure/spring-apps-deploy@v1
with:
azure-subscription: ${{ env.AZURE_SUBSCRIPTION }}
action: delete-staging-deployment
service-name: <service instance name>
app-name: <app name>
Build létrehozása vagy frissítése (csak vállalati csomag esetén)
Az alábbi példa létrehoz vagy frissít egy builderőforrást a Vállalati csomagban:
# environment preparation configurations omitted
steps:
- name: Create or update build
uses: azure/spring-apps-deploy@v1
with:
azure-subscription: ${{ env.AZURE_SUBSCRIPTION }}
action: build
service-name: <service instance name>
build-name: <build name>
package: ${{ env.ASC_PACKAGE_PATH }}
builder: <builder>
Build törlése (csak vállalati csomag esetén)
Az alábbi példa töröl egy builderőforrást a Vállalati csomagban:
# environment preparation configurations omitted
steps:
- name: Delete build
uses: azure/spring-apps-deploy@v1
with:
azure-subscription: ${{ env.AZURE_SUBSCRIPTION }}
action: delete-build
service-name: <service instance name>
build-name: <build name>
Üzembe helyezés a Maven beépülő modullal
Egy másik lehetőség a Maven beépülő modul használata a Jar üzembe helyezéséhez és az alkalmazásbeállítások frissítéséhez. A parancs mvn azure-spring-apps:deploy
idempotens, és szükség esetén automatikusan létrehozza az alkalmazásokat. Nem kell előre létrehoznia a megfelelő alkalmazásokat.
name: AzureSpringApps
on: push
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@main
- name: Set up Java 11
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '11'
- name: maven build, clean
run: |
mvn clean package -DskipTests
# Maven plugin can cosume this authentication method automatically
- name: Azure Login
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
# Maven deploy, make sure you have correct configurations in your pom.xml
- name: deploy to Azure Spring Apps using Maven
run: |
mvn azure-spring-apps:deploy
A munkafolyamat futtatása
A GitHub Actions automatikusan engedélyezve lesz, miután leküldte a .github/workflow/main.yml a GitHubra. A művelet egy új véglegesítés leküldésekor aktiválódik. Ha ezt a fájlt a böngészőben hozza létre, a műveletnek már le kellett volna futnia.
A művelet engedélyezésének ellenőrzéséhez válassza a GitHub-adattár lap Műveletek lapját:
Ha a művelet hibásan fut, például ha nem állította be az Azure hitelesítő adatait, a hiba kijavítása után újra futtathatja az ellenőrzéseket. A GitHub-adattár lapján válassza a Műveletek lehetőséget, válassza ki az adott munkafolyamat-feladatot, majd válassza az Újrafuttatás gombot az ellenőrzések újrafuttatásához: