Python-webalkalmazás létrehozása és üzembe helyezése az Azure Pipelines használatával Azure-alkalmazás Szolgáltatásban
Azure DevOps Services
Az Azure Pipelines használatával folyamatos integrációt és folyamatos teljesítést (CI/CD) használhat Python-webalkalmazások létrehozásához és üzembe helyezéséhez a Linux Azure-alkalmazás szolgáltatásban. A folyamat automatikusan létrehozza és üzembe helyezi a Python-webalkalmazást az App Service-ben, amikor véglegesítés van az adattárban.
Ebben a cikkben az alábbiakkal ismerkedhet meg:
- Webalkalmazás létrehozása az Azure App Service használatával.
- Projekt létrehozása az Azure DevOpsban.
- Csatlakozás a DevOps-projektet az Azure-ba.
- Hozzon létre egy Python-specifikus folyamatot.
- Futtassa a folyamatot az alkalmazás webalkalmazásban való létrehozásához és üzembe helyezéséhez az App Service-ben.
Előfeltételek
- Azure-előfizetés. Ha még nincs előfizetése, hozzon létre egy ingyenes fiókot.
- Egy GitHub-fiók. Ha nincs ilyenje, hozzon létre egyet ingyen.
- Egy Azure DevOps Services-szervezet. Hozzon létre egyet ingyen.
- Azure-előfizetés. Ha még nincs előfizetése, hozzon létre egy ingyenes fiókot.
- Egy GitHub-fiók. Ha nincs ilyenje, hozzon létre egyet ingyen.
- Egy Azure DevOps-kiszolgáló.
- Egy saját üzemeltetésű ügynök. Ha saját üzemeltetésű ügynököt kell létrehoznia, tekintse meg a saját üzemeltetésű ügynököket.
Adattár létrehozása az alkalmazáskódhoz
A mintaadattárat https://github.com/Microsoft/python-sample-vscode-flask-tutorial elágaztathatja a GitHub-fiókjába.
A helyi gazdagépen klónozza a GitHub-adattárat. Használja az alábbi parancsot az elágazott adattár URL-címére cserélve <repository-url>
.
git clone <repository-url>
Alkalmazás helyi tesztelése
Hozza létre és futtassa az alkalmazást helyileg, hogy biztosan működjön.
Váltson a klónozott adattár mappára.
cd python-sample-vscode-flask-tutorial
Készítsen buildet és futtassa az alkalmazást
python -m venv .env source .env/bin/activate pip install --upgrade pip pip install -r ./requirements.txt export set FLASK_APP=hello_app.webapp python3 -m flask run
Az alkalmazás megtekintéséhez nyisson meg egy böngészőablakot, és nyissa meg a következőt http://localhost:5000: . Ellenőrizze, hogy megjelenik-e a cím
Visual Studio Flask Tutorial
.Ha végzett, zárja be a böngészőablakot, és állítsa le a Flask-kiszolgálót a Ctrl C billentyűkombinációval.+
A Cloud Shell megnyitása
Jelentkezzen be az Azure Portalra a https://portal.azure.com webhelyen.
Nyissa meg az Azure CLI-t a Cloud Shell gombra kattintva a portál eszköztárán.
A Cloud Shell a böngésző alján jelenik meg. Válassza a Bash lehetőséget a legördülő menüből.
Ha több helyet szeretne biztosítani a munkához, válassza a teljes méret gombot.
Azure-alkalmazás Service-webalkalmazás létrehozása
Hozza létre a Azure-alkalmazás Service-webalkalmazást a Cloud Shellből az Azure Portalon.
Tipp.
A Cloud Shellbe való beillesztéshez használja a Ctrl Shift V billentyűkombinációt++, vagy kattintson a jobb gombbal, és válassza a Beillesztés lehetőséget a helyi menüből.
Klónozza az adattárat a következő paranccsal, és cserélje le
<repository-url>
az elágazott adattár URL-címére.git clone <repository-url>
Módosítsa a könyvtárat a klónozott adattár mappára, így a
az webapp up
parancs Python-alkalmazásként ismeri fel az alkalmazást.cd python-sample-vscode-flask-tutorial
Az az webapp up paranccsal kiépítheti az App Service-t, és elvégezheti az alkalmazás első üzembe helyezését. Cserélje le
<your-web-app-name>
az Azure-ban egyedi nevet. Általában egy személyes vagy cégnevet használ egy alkalmazásazonosítóval együtt, például<your-name>-flaskpipelines
. Az alkalmazás URL-címe a your-appservice.azurewebsites.net> lesz<.az webapp up --name <your-web-app-name>
A parancs JSON-kimenete a
az webapp up
következőt mutatja:{ "URL": <your-web-app-url>, "appserviceplan": <your-app-service-plan-name>, "location": <your-azure-location>, "name": <your-web-app-name>, "os": "Linux", "resourcegroup": <your-resource-group>, "runtime_version": "python|3.11", "runtime_version_detected": "-", "sku": <sku>, "src_path": <repository-source-path> }
Jegyezze fel az
URL
értékeket és azruntime_version
értékeket. A folyamat YAML-fájljában használjaruntime_version
. AURL
webalkalmazás URL-címe. Ezzel ellenőrizheti, hogy az alkalmazás fut-e.Feljegyzés
Az
az webapp up
parancs a következő műveleteket hajtja végre:Hozzon létre egy alapértelmezett erőforráscsoportot.
Hozzon létre egy alapértelmezett App Service-csomagot.
Hozzon létre egy alkalmazást a megadott névvel.
A Zip üzembe helyezi az összes fájlt az aktuális munkakönyvtárból, és engedélyezve van a buildautomatizálás.
Gyorsítótárazza a paramétereket helyileg az .azure/config fájlban, hogy ne kelljen újból megadnia őket, amikor később a projektmappából vagy más
az webapp
parancsokkalaz webapp up
telepíti őket. A gyorsítótárazott értékek alapértelmezés szerint automatikusan használatosak.
A parancsparaméterekkel felülbírálhatja az alapértelmezett műveletet a saját értékeivel. További információ: az webapp up.
A python-sample-vscode-flask-tutorial alkalmazás rendelkezik egy startup.txt fájllal, amely tartalmazza a webalkalmazás adott indítási parancsát. A webalkalmazás
startup-file
konfigurációs tulajdonságának beállítása a következőrestartup.txt
: .Másolja ki az értéket a
az webapp up
parancs kimenetébőlresourcegroup
.Adja meg a következő parancsot az erőforráscsoport és az alkalmazásnév használatával.
az webapp config set --resource-group <your-resource-group> --name <your-web-app-name> --startup-file startup.txt
Amikor a parancs befejeződik, jSON-kimenet jelenik meg, amely tartalmazza a webalkalmazás összes konfigurációs beállítását.
A futó alkalmazás megtekintéséhez nyisson meg egy böngészőt, és lépjen a
URL
az webapp up
parancs kimenetében láthatóra. Ha általános lapot lát, várjon néhány másodpercet, amíg az App Service elindul, majd frissítse a lapot. Ellenőrizze, hogy megjelenik-e a címVisual Studio Flask Tutorial
.
Azure DevOps-projekt létrehozása
Hozzon létre egy új Azure DevOps-projektet.
- Egy böngészőben nyissa meg a dev.azure.com , és jelentkezzen be.
- Válassza ki a szervezetet.
- Hozzon létre egy új projektet az Új projekt vagy a Projekt létrehozása lehetőség kiválasztásával, ha az első projektet hozza létre a szervezetben.
- Adjon meg egy projektnevet.
- Válassza ki a projekt láthatóságát .
- Válassza a Létrehozás lehetőséget.
- Egy böngészőben nyissa meg az Azure DevOps Servert.
- Válassza ki a gyűjteményt.
- Új projekt létrehozásához válassza az Új projekt vagy a Projekt létrehozása lehetőséget, ha az első projektet hozza létre a gyűjteményben.
- Adjon meg egy projektnevet.
- Válassza ki a projekt láthatóságát .
- Válassza a Létrehozás lehetőséget.
Egyszerű szolgáltatás létrehozása
A szolgáltatásnevek arra a célra létrehozott identitások, hogy az alkalmazások, üzemeltetett szolgáltatások és automatizált eszközök Azure-erőforrásokhoz férhessenek hozzá. Ez a hozzáférés a szolgáltatásnévhez rendelt szerepkörökre korlátozódik, így szabályozhatja, hogy mely erőforrások érhetők el, és mely szinten.
Szolgáltatásnév létrehozásához nyissa meg a Cloud Shellt (bash), és futtassa a következő parancsot. Cserélje le <service-principal-name>
a szolgáltatásnév nevét, <your-subscription-id>
az előfizetés azonosítóját és <your-resource-group>
a webalkalmazás erőforráscsoportját.
az ad sp create-for-rbac --display-name <service-principal-name> --role contributor --scopes /subscriptions/<your-subscription-id>/resourceGroups/<your-resource-group>
A parancs az alábbi példához hasonló JSON-objektumot ad vissza:
{
"clientId": "<client GUID>",
"clientSecret": "<string-value>",
"subscriptionId": "<subscription GUID>",
"tenantId": "<tenant GUID>",
...
}
Jegyezze fel a clientId
, clientSecret
, subscriptionId
és tenantId
az értékeket. Ezekre az értékekre szüksége van egy szolgáltatáskapcsolat létrehozásához a következő szakaszban.
Szolgáltatáskapcsolat létrehozása
A szolgáltatáskapcsolatokkal létrehozhat egy kapcsolatot, amely hitelesített hozzáférést biztosít az Azure Pipelinesból a külső és távoli szolgáltatásokhoz. A Azure-alkalmazás Service-webalkalmazásban való üzembe helyezéshez hozzon létre egy szolgáltatáskapcsolatot a webalkalmazást tartalmazó erőforráscsoporthoz.
A Projekt lapon válassza a Projektbeállítások lehetőséget.
Válassza ki a szolgáltatáskapcsolatokat a menü Folyamatok szakaszában.
Válassza a Szolgáltatáskapcsolat létrehozása lehetőséget.
Válassza az Azure Resource Managert , és válassza a Tovább lehetőséget.
Válassza ki a hitelesítési módszert, és válassza a Tovább gombot.
Az Új Azure-szolgáltatáskapcsolat párbeszédpanelen adja meg a kiválasztott hitelesítési módszerre vonatkozó információkat. A hitelesítési módszerekkel kapcsolatos további információkért tekintse meg az Azure-ba irányuló Csatlakozás Azure Resource Manager-szolgáltatáskapcsolat használatával.
Ha például számítási feladat identitás-összevonási (automatikus) vagy egyszerű (automatikus) hitelesítési módszert használ, adja meg a szükséges információkat.
Mező Leírás Hatókör szintje Válasszon ki egy Előfizetést. Előfizetés Az Azure-előfizetés neve. Erőforráscsoport A webalkalmazást tartalmazó erőforráscsoport neve. Szolgáltatáskapcsolat neve A kapcsolat leíró neve. Hozzáférési engedélyek megadása az összes folyamathoz Ezzel a beállítással hozzáférést adhat az összes folyamathoz. Válassza a Mentés lehetőséget.
Az új kapcsolat megjelenik a Szolgáltatáskapcsolatok listában, és készen áll az Azure Pipeline-ban való használatra.
A Projekt lapon válassza a Projektbeállítások lehetőséget.
Válassza ki a szolgáltatáskapcsolatokat a menü Folyamatok szakaszában.
Válassza a Szolgáltatáskapcsolat létrehozása lehetőséget.
Válassza az Azure Resource Managert , és válassza a Tovább lehetőséget.
Új Azure-szolgáltatáskapcsolat esetén válassza a Szolgáltatásnév (manuális) lehetőséget, majd a Tovább gombot
A következő párbeszédpanelen adja meg a szükséges információkat.
Mező Leírás Environment Válassza ki Azure Cloud
.Hatókör szintje Válasszon ki egy Előfizetést. Előfizetés azonosítója Az előfizetés azonosítója. Előfizetés neve Az Azure-előfizetés neve. Szolgáltatásnév azonosítója A appId
parancs által visszaadottaz ad sp create-for-rbac
JSON-objektum értéke.Szolgáltatásnév kulcsa A password
parancs által visszaadottaz ad sp create-for-rbac
JSON-objektum értéke.Bérlőazonosító A tenant
parancs által visszaadottaz ad sp create-for-rbac
JSON-objektum értéke.Válassza az Ellenőrzés lehetőséget a kapcsolat ellenőrzéséhez.
Adjon meg egy szolgáltatáskapcsolatnevet.
Győződjön meg arról, hogy minden folyamathoz hozzáférési engedélyeket ad meg.
Válassza az Ellenőrzés és mentés lehetőséget.
Az új kapcsolat megjelenik a Szolgáltatáskapcsolatok listában, és készen áll arra, hogy az Azure Pipelines a projektből használja.
Saját üzemeltetésű ügynök konfigurálása
Ha saját, saját üzemeltetésű ügynököt használ, konfigurálnia kell az ügynököt a Python futtatására. A Python-verziók letöltése nem támogatott a saját üzemeltetésű ügynökök esetében. Előzetesen el kell végeznie a Python-verziót. A teljes telepítővel beszerezheti a Python pipkompatibilis verzióját.
Az inkompatibilis problémák elkerülése érdekében egyeznie kell a Python-verzióval a Azure-alkalmazás Services-webalkalmazás futtatókörnyezeti verziójával. A futtatókörnyezet verziója megjelenik a parancs JSON-kimenetében az webapp up
.
A kívánt Python-verziót hozzá kell adni az eszköz gyorsítótárához a saját üzemeltetésű ügynökön, hogy a feladat használni tudja. Az eszközgyorsítótár általában az ügynök _work/_tool könyvtárában található; vagy felül lehet bírálni az elérési utat a AGENT_TOOLSDIRECTORY környezeti változóval. Az eszközök könyvtárában hozza létre a következő könyvtárstruktúrát a Python-verzió alapján:
$AGENT_TOOLSDIRECTORY/
Python/
{version number}/
{platform}/
{tool files}
{platform}.complete
A verziószámnak az 1.2.3 formátumot kell követnie. A platformnak x86-nak vagy x64-nek kell lennie. Az eszközfájloknak a nem tömörített Python-verziófájloknak kell lenniük. A {platform}.complete
fájlnak egy 0 bájtos fájlnak kell lennie, amely úgy x86.complete
néz ki, vagy x64.complete
csak azt jelzi, hogy az eszköz megfelelően van telepítve a gyorsítótárban.
Ha például Python 3.11-et használ egy 64 bites Windows-gépen, a címtárstruktúra a következőképpen nézne ki:
$AGENT_TOOLSDIRECTORY/
Python/
3.11.4/
x64/
{python files}
x64.complete
Ha már rendelkezik az ügynököt üzemeltető gépen használni kívánt Python-verzióval, átmásolhatja a fájlokat az eszköz gyorsítótárba. Ha nem rendelkezik a Python-verzióval, letöltheti a Python webhelyéről.
Folyamat létrehozása
Hozzon létre egy folyamatot a Python-webalkalmazás Azure-alkalmazás Szolgáltatásban való létrehozásához és üzembe helyezéséhez. A folyamatfogalmak megismeréséhez tekintse meg az alábbiakat:
A bal oldali navigációs menüben válassza a Folyamatok lehetőséget.
Válassza a Folyamat létrehozása lehetőséget.
A Hol van a kód párbeszédpanelen válassza a GitHubot. Előfordulhat, hogy a rendszer arra kéri, hogy jelentkezzen be a GitHubra.
Az Adattár kiválasztása képernyőn válassza ki az elágazott mintaadattárat.
Előfordulhat, hogy a rendszer megerősítésként ismét kérni fogja a GitHub-jelszó megadását.
Ha az Azure Pipelines-bővítmény nincs telepítve a GitHubon, a GitHub megkéri, hogy telepítse az Azure Pipelines bővítményt .
Ezen a lapon görgessen le az Adattár hozzáférési szakaszához, válassza ki, hogy az összes adattárra vagy csak a kijelölt tárházakra telepíti-e a bővítményt, majd válassza a Jóváhagyás és telepítés lehetőséget.
A Folyamat konfigurálása párbeszédpanelen válassza a Pythont linuxos webalkalmazásba az Azure-ban.
Válassza ki az Azure-előfizetését, és válassza a Folytatás lehetőséget.
Ha a felhasználónevét és a jelszavát használja a hitelesítéshez, megnyílik egy böngésző, amelyben bejelentkezhet a Microsoft-fiókjába.
Válassza ki a webalkalmazás nevét a legördülő listából, és válassza az Ellenőrzés és konfigurálás lehetőséget.
Az Azure Pipelines létrehoz egy azure-pipelines.yml fájlt, és megjeleníti azt a YAML-folyamatok szerkesztőjében. A folyamatfájl fázisok, feladatok és lépések sorozataként határozza meg a CI/CD-folyamatot, ahol minden lépés tartalmazza a különböző tevékenységek és szkriptek részleteit. Tekintse meg a folyamatot, és nézze meg, mit csinál. Győződjön meg arról, hogy az összes alapértelmezett bemenet megfelelő a kódhoz.
A navigációs menüben válassza a Folyamatok lehetőséget.
Válassza a Folyamat létrehozása lehetőséget.
::image type="content" source="media/create-first-pipeline.png" alt-text="Screenshot of New pipeline button.":::
A Hol található a kód párbeszédpanelen válassza a GitHub Enterprise Server lehetőséget. Előfordulhat, hogy a rendszer arra kéri, hogy jelentkezzen be a GitHubra.
Az Adattár kiválasztása lapon válassza ki az elágazott mintaadattárat.
Előfordulhat, hogy a rendszer megerősítésként ismét kérni fogja a GitHub-jelszó megadását.
Ha az Azure Pipelines-bővítmény nincs telepítve a GitHubon, a GitHub megkéri, hogy telepítse az Azure Pipelines bővítményt .
Ezen a lapon görgessen le az Adattár hozzáférési szakaszához, válassza ki, hogy az összes adattárra vagy csak a kijelölt tárházakra telepíti-e a bővítményt, majd válassza a Jóváhagyás és telepítés lehetőséget.
A Folyamat konfigurálása párbeszédpanelen válassza a Starter-folyamatot.
Cserélje le a azure-pipelines.yml fájl tartalmát a következő kódra.
trigger: - main variables: # Azure Resource Manager connection created during pipeline creation azureServiceConnectionId: '<your-service-connection-name>' # Web app name webAppName: '<your-web-app-name>' # Environment name environmentName: '<your-web-app-name>' # Project root folder. projectRoot: $(System.DefaultWorkingDirectory) # Python version: pythonVersion: '<your-python-version>' stages: - stage: Build displayName: Build stage jobs: - job: BuildJob pool: name: '<your-pool-name>' demands: python steps: - task: UsePythonVersion@0 inputs: versionSpec: '$(pythonVersion)' displayName: 'Use Python $(pythonVersion)' - script: | python -m venv antenv source antenv/bin/activate python -m pip install --upgrade pip pip install setup pip install -r requirements.txt workingDirectory: $(projectRoot) displayName: "Install requirements" - task: ArchiveFiles@2 displayName: 'Archive files' inputs: rootFolderOrFile: '$(projectRoot)' includeRootFolder: false archiveType: zip archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip replaceExistingArchive: true - task: PublishBuildArtifacts@1 inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)' ArtifactName: 'drop' publishLocation: 'Container' - stage: Deploy displayName: 'Deploy Web App' dependsOn: Build condition: succeeded() jobs: - deployment: DeploymentJob pool: name: '<your-pool-name' environment: $(environmentName) strategy: runOnce: deploy: steps: - task: UsePythonVersion@0 inputs: versionSpec: '$(pythonVersion)' displayName: 'Use Python version' - task: AzureWebApp@1 displayName: 'Deploy Azure Web App : <your-web-app-name>' inputs: azureSubscription: $(azureServiceConnectionId) appName: $(webAppName) package: $(Pipeline.Workspace)/drop/$(Build.BuildId).zip startUpCommand: 'startup.txt'
Cserélje le a következő helyőrzőket a saját értékeire:
Helyőrző Leírás <your-service-connection-name>
A létrehozott szolgáltatáskapcsolat neve. <your-web-app-name>
A Azure-alkalmazás Service-webalkalmazás neve. <your-pool-name>
A használni kívánt ügynökkészlet neve. <your-python-version>
Az ügynökén futó Python-verzió. Érdemes ezt a verziót a webalkalmazásban futó Python-verzióval egyeztetni. A webalkalmazás verziója megjelenik a parancs JSON-kimenetében az webapp up
.
YAML-folyamatfájl
Az alábbi magyarázat a YAML-folyamatfájlt ismerteti. A folyamat YAML-fájlséma megismeréséhez tekintse meg a YAML-sémahivatkozást.
Változók
A variables
szakasz a következő változókat tartalmazza:
variables:
# Azure Resource Manager connection created during pipeline creation
azureServiceConnectionId: '<GUID>'
# Web app name
webAppName: '<your-web-app-name>'
# Agent VM image name
vmImageName: 'ubuntu-latest'
# Environment name
environmentName: '<your-web-app-name>'
# Project root folder.
projectRoot: $(System.DefaultWorkingDirectory)
# Python version: 3.11. Change this to match the Python runtime version running on your web app.
pythonVersion: '3.11'
Változó | Leírás |
---|---|
azureServiceConnectionId |
Az Azure Resource Manager szolgáltatáskapcsolat azonosítója vagy neve. |
webAppName |
A Azure-alkalmazás Service-webalkalmazás neve. |
vmImageName |
A buildügynökhöz használandó operációs rendszer neve. |
environmentName |
Az üzembe helyezési szakaszban használt környezet neve. A környezet automatikusan létrejön a szakaszfeladat futtatásakor. |
projectRoot |
Az alkalmazáskódot tartalmazó gyökérmappa. |
pythonVersion |
A Python buildelési és üzembe helyezési ügynökökön használható verziója. |
A variables
szakasz a következő változókat tartalmazza:
variables:
# Azure Resource Manager connection created during pipeline creation
azureServiceConnectionId: '<your-service-connection-name>'
# Web app name
webAppName: '<your-web-app-name>'
# Environment name
environmentName: '<your-web-app-name>'
# Project root folder.
projectRoot: $(System.DefaultWorkingDirectory)
# Python version: 3.11. Change this to the version that is running on your agent and web app.
pythonVersion: '3.11'
Változó | Leírás |
---|---|
azureServiceConnectionId |
Az Azure Resource Manager szolgáltatáskapcsolat neve. |
webAppName |
A webalkalmazás neve. |
environmentName |
Az üzembe helyezési szakaszban használt környezet neve. |
projectRoot |
Az alkalmazáskódot tartalmazó mappa. Az érték egy automatikus rendszerváltozó. |
pythonVersion |
A Python buildelési és üzembe helyezési ügynökökön használható verziója. |
Buildelési szakasz
A buildelési fázis egyetlen feladatot tartalmaz, amely a vmImageName változóban meghatározott operációs rendszeren fut.
- job: BuildJob
pool:
vmImage: $(vmImageName)
A buildelési szakasz egyetlen feladatot tartalmaz, amely a névparaméter által azonosított készletben lévő ügynökön fut. A kulcsszóval demands
megadhatja az ügynök képességeit. Például azt határozza meg, demands: python
hogy az ügynöknek telepítve kell lennie a Pythonnal. A saját üzemeltetésű ügynök név szerinti megadásához használhatja a kulcsszót demands: Agent.Name -equals <agent-name>
.
- job: BuildJob
pool:
name: <your-pool-name>
demands: python
A feladat több lépést tartalmaz:
A UsePythonVersion feladat kiválasztja a Használni kívánt Python-verziót. A verzió a változóban
pythonVersion
van definiálva.- task: UsePythonVersion@0 inputs: versionSpec: '$(pythonVersion)' displayName: 'Use Python $(pythonVersion)'
Ez a lépés egy szkript használatával hoz létre egy virtuális Python-környezetet, és telepíti a fájlban
requirements.txt
található alkalmazás függőségeit. A--target
paraméter megadja a függőségek telepítésének helyét. AworkingDirectory
paraméter megadja az alkalmazáskód helyét.- script: | python -m venv antenv source antenv/bin/activate python -m pip install --upgrade pip pip install setup pip install --target="./.python_packages/lib/site-packages" -r ./requirements.txt workingDirectory: $(projectRoot) displayName: "Install requirements"
Az ArchiveFiles feladat létrehozza a webalkalmazást tartalmazó .zip archívumot. A
.zip
rendszer a fájlt a rendszer a névvel ellátottdrop
összetevőként tölti fel a folyamatba. A.zip
fájl az üzembe helyezési szakaszban használatos az alkalmazás webalkalmazásban való üzembe helyezéséhez.- task: ArchiveFiles@2 displayName: 'Archive files' inputs: rootFolderOrFile: '$(projectRoot)' includeRootFolder: false archiveType: zip archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip replaceExistingArchive: true - upload: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip displayName: 'Upload package' artifact: drop
Paraméter Leírás rootFolderOrFile
Az alkalmazáskód helye. includeRootFolder
Azt jelzi, hogy a gyökérmappa szerepel-e a .zip fájlban. Ha ezt a paramétert másként false
állítja be, a .zip fájl tartalma egy s nevű mappába kerül, és a Linux-tárolón futó App Service nem találja az alkalmazáskódot.archiveType
A létrehozandó archívum típusa. Állítsa zip
értékre.archiveFile
A létrehozandó .zip fájl helye. replaceExistingArchive
Azt jelzi, hogy lecserél-e egy meglévő archívumot, ha a fájl már létezik. Állítsa true
értékre.upload
A feltöltendő .zip fájl helye. artifact
A létrehozandó összetevő neve.
Üzembe helyezési szakasz
Az üzembe helyezési szakasz akkor fut, ha a buildelési szakasz sikeresen befejeződött. A következő kulcsszavak határozzák meg ezt a viselkedést:
dependsOn: Build
condition: succeeded()
Az üzembe helyezési szakasz egyetlen üzembehelyezési feladatot tartalmaz, amely a következő kulcsszavakkal van konfigurálva:
- deployment: DeploymentJob
pool:
vmImage: $(vmImageName)
environment: $(environmentName)
Kulcsszó | Leírás |
---|---|
deployment |
Azt jelzi, hogy a feladat egy környezetet célzó üzembehelyezési feladat. |
pool |
Az üzembehelyezési ügynökkészletet adja meg. Az alapértelmezett ügynökkészlet, ha a név nincs megadva. A vmImage kulcsszó azonosítja az ügynök virtuálisgép-lemezképének operációs rendszerét |
environment |
Meghatározza, hogy a környezet mely környezetben legyen üzembe helyezve. A környezet automatikusan létrejön a projektben a feladat futtatásakor. |
- deployment: DeploymentJob
pool:
name: <your-pool-name>
environment: $(environmentName)
Kulcsszó | Leírás |
---|---|
deployment |
Azt jelzi, hogy a feladat egy környezetet célzó üzembehelyezési feladat. |
pool Megadja az üzembe helyezéshez használni kívánt ügynökkészletet. Ennek a készletnek tartalmaznia kell egy ügynököt, amely képes futtatni a folyamatban megadott Python-verziót. |
|
environment |
Meghatározza, hogy a környezet mely környezetben legyen üzembe helyezve. A környezet automatikusan létrejön a projektben a feladat futtatásakor. |
A strategy
kulcsszó az üzembehelyezési stratégia meghatározására szolgál. A runOnce
kulcsszó azt határozza meg, hogy az üzembehelyezési feladat egyszer fusson. A deploy
kulcsszó megadja az üzembe helyezési feladatban futtatandó lépéseket.
strategy:
runOnce:
deploy:
steps:
A steps
folyamat a következő:
A UsePythonVersion feladattal adja meg az ügynökön használni kívánt Python-verziót. A verzió a változóban
pythonVersion
van definiálva.- task: UsePythonVersion@0 inputs: versionSpec: '$(pythonVersion)' displayName: 'Use Python version'
A webalkalmazás üzembe helyezése a AzureWebApp@1 használatával. Ez a feladat üzembe helyezi a folyamat összetevőt
drop
a webalkalmazásban.- task: AzureWebApp@1 displayName: 'Deploy Azure Web App : <your-web-app-name>' inputs: azureSubscription: $(azureServiceConnectionId) appName: $(webAppName) package: $(Pipeline.Workspace)/drop/$(Build.BuildId).zip
Paraméter Leírás azureSubscription
A használni kívánt Azure Resource Manager-szolgáltatás kapcsolatazonosítója vagy neve. appName
A webalkalmazás neve. package
Az üzembe helyezendő .zip fájl helye. Mivel a python-vscode-flask-tutorial adattár ugyanazt az indítási parancsot tartalmazza egy startup.txt nevű fájlban, a következő paraméter hozzáadásával adhatja meg a fájlt:
startUpCommand: 'startup.txt'
.- task: AzureWebApp@1 displayName: 'Deploy Azure Web App : $(webAppName)' inputs: azureSubscription: $(azureServiceConnectionId) appName: $(webAppName) package: $(Pipeline.Workspace)/drop/$(Build.BuildId).zip startUpCommand: 'startup.txt'
Paraméter Leírás azureSubscription
A használni kívánt Azure Resource Manager-szolgáltatás kapcsolatazonosítója vagy neve. appName
A webalkalmazás neve. package
Az üzembe helyezendő .zip fájl helye. startUpCommand
Az alkalmazás üzembe helyezése után futtatandó parancs. A mintaalkalmazás a következőt használja startup.txt
: .
A folyamat futtatása
Most már készen áll a kipróbálásra!
A szerkesztőben válassza a Mentés és futtatás lehetőséget.
A Mentés és futtatás párbeszédpanelen adjon hozzá egy véglegesítési üzenetet, majd válassza a Mentés és futtatás lehetőséget.
A folyamat futásának megtekintéséhez válassza ki a fázisokat vagy feladatokat a folyamatfuttatás összegzésében.
Az egyes fázisok és feladatok mellett zöld pipák jelennek meg, miközben sikeresen befejeződik. Ha hibák történnek, azok megjelennek az összegzésben vagy a feladat lépéseiben.
Gyorsan visszatérhet a YAML-szerkesztőhöz az Összefoglalás oldal jobb felső sarkában lévő függőleges pontokkal, és válassza a Folyamat szerkesztése lehetőséget:
Az üzembe helyezési feladatban válassza az Azure Web App üzembe helyezése feladatot a kimenet megjelenítéséhez. Az üzembe helyezett webhely megtekintéséhez tartsa lenyomva a Ctrl billentyűt, és válassza ki az URL-címet.
App Service Application URL
Ha a mintaalkalmazást használja, az alkalmazásnak a következőképpen kell megjelennie:
Fontos
Ha az alkalmazás egy hiányzó függőség miatt meghiúsul, akkor a requirements.txt fájl feldolgozása nem történt meg az üzembe helyezés során. Ez a viselkedés akkor fordul elő, ha a webalkalmazást közvetlenül a portálon hozta létre a az webapp up
jelen cikkben látható parancs helyett.
A az webapp up
parancs kifejezetten a buildelési műveletet SCM_DO_BUILD_DURING_DEPLOYMENT
állítja be a következőre true
: . Ha az app service-t a portálon keresztül létesítette, a művelet nem lesz automatikusan beállítva.
A következő lépésekkel állíthatja be a műveletet:
- Nyissa meg az Azure Portalt, válassza ki az App Service-t, majd válassza a Konfiguráció lehetőséget.
- Az Alkalmazás Gépház lapon válassza az Új alkalmazásbeállítás lehetőséget.
- A megjelenő előugró ablakban állítsa be a Név
SCM_DO_BUILD_DURING_DEPLOYMENT
beállítást, állítsa az Érték értékét az értékretrue
, és válassza az OK gombot. - Válassza a Konfiguráció lap tetején található Mentés lehetőséget.
- A folyamat újbóli futtatása. A függőségeket telepíteni kell az üzembe helyezés során.
Folyamat futtatásának aktiválása
Folyamatfuttatás indításához véglegesítsen egy módosítást az adattárban. Hozzáadhat például egy új funkciót az alkalmazáshoz, vagy frissítheti az alkalmazás függőségeit.
- Nyissa meg a GitHub-adattárat.
- Módosítsa a kódot, például módosítsa az alkalmazás címét.
- Véglegesítse a módosítást az adattárban.
- Lépjen a folyamatra, és ellenőrizze, hogy létrejön-e egy új futtatás.
- Ha a futtatás befejeződött, ellenőrizze, hogy az új build telepítve van-e a webalkalmazásban.
- Az Azure Portalon nyissa meg a webalkalmazást.
- Válassza az Üzembehelyezési központ lehetőséget , és válassza a Naplók lapot.
- Ellenőrizze, hogy az új üzembe helyezés szerepel-e a listában.
A Django szempontjai
Ha külön adatbázist használ, az Azure Pipelines használatával django-alkalmazásokat helyezhet üzembe Azure-alkalmazás Linuxon futó szolgáltatásban. Nem használhat SQLite-adatbázist, mert az App Service zárolja a db.sqlite3 fájlt, megakadályozva az olvasást és az írást. Ez a viselkedés nem befolyásolja a külső adatbázist.
A Python-alkalmazás konfigurálása az App Service - Tároló indítási folyamatában leírtak szerint az App Service automatikusan keres egy wsgi.py fájlt az alkalmazáskódon belül, amely általában az alkalmazásobjektumot tartalmazza. Ha bármilyen módon testre szeretné szabni az indítási parancsot, használja a startUpCommand
AzureWebApp@1
YAML-folyamatfájl lépésének paraméterét az előző szakaszban leírtak szerint.
A Django használatakor általában az alkalmazáskód üzembe helyezése után szeretné migrálni az adatmodelleket manage.py migrate
. Ehhez hozzáadhat startUpCommand
egy üzembe helyezés utáni szkriptet. Itt látható például a startUpCommand
AzureWebApp@1 feladat tulajdonsága.
- task: AzureWebApp@1
displayName: 'Deploy Azure Web App : $(webAppName)'
inputs:
azureSubscription: $(azureServiceConnectionId)
appName: $(webAppName)
package: $(Pipeline.Workspace)/drop/$(Build.BuildId).zip
startUpCommand: 'python manage.py migrate'
Tesztek futtatása a buildügynökön
A buildelési folyamat részeként érdemes lehet teszteket futtatni az alkalmazás kódján. A tesztek a buildügynökön futnak, ezért a függőségeket egy virtuális környezetbe kell telepítenie a buildügynökön. A tesztek futtatása után törölje a virtuális környezetet, mielőtt létrehozza a .zip fájlt az üzembe helyezéshez. A következő szkriptelemek ezt a folyamatot szemléltetik. Helyezze őket a ArchiveFiles@2
feladat elé a azure-pipelines.yml fájlban. További információ: Platformfüggetlen szkriptek futtatása.
# The | symbol is a continuation character, indicating a multi-line script.
# A single-line script can immediately follow "- script:".
- script: |
python -m venv .env
source .env/bin/activate
pip install setuptools
pip install -r requirements.txt
# The displayName shows in the pipeline UI when a build runs
displayName: 'Install dependencies on build agent'
- script: |
# Put commands to run tests here
displayName: 'Run tests'
- script: |
echo Deleting .env
deactivate
rm -rf .env
displayName: 'Remove .env before zip'
Olyan feladatokat is használhat, mint a PublishTestResults@2 a teszteredmények a folyamaton való közzétételéhez. További információ: Python-alkalmazások létrehozása – Tesztek futtatása.
Az erőforrások eltávolítása
Az oktatóanyagban létrehozott Azure-erőforrások költségeinek elkerülése érdekében:
Törölje a létrehozott projektet. A projekt törlése törli a folyamatot és a szolgáltatáskapcsolatot.
Törölje az App Service-t és az App Service-csomagot tartalmazó Azure-erőforráscsoportot. Az Azure Portalon lépjen az erőforráscsoportra, válassza az Erőforráscsoport törlése lehetőséget, és kövesse az utasításokat.
Törölje a Cloud Shell fájlrendszerét karbantartó tárfiókot. Zárja be a Cloud Shellt, majd lépjen a Cloud-Shell-Storage-val kezdődő erőforráscsoportra, válassza az Erőforráscsoport törlése lehetőséget, és kövesse az utasításokat.
Következő lépések
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: