Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Služby Azure DevOps
V tomto kurzu se dozvíte, jak pomocí Služby Azure Pipelines pro kontinuální integraci a průběžné doručování (CI/CD) sestavit a nasadit webovou aplikaci v Pythonu do služby Azure App Service v Linuxu. Kanál automaticky sestaví a nasadí vaši webovou aplikaci v Pythonu do služby App Service, kdykoli dojde k potvrzení do úložiště kódu aplikace.
V tomto kurzu se naučíte:
- Vytvořte webovou aplikaci v Pythonu a nahrajte ji do služby Azure App Service.
- Připojte svůj projekt Azure DevOps k Azure.
- Vytvořte kanál sestavení a nasazení specifický pro Azure Pipelines pro vaši aplikaci.
- Spuštěním kanálu sestavte, otestujte a nasaďte do webové aplikace Azure App Service.
- Nastavte trigger pro spuštění kanálu při každém potvrzení do úložiště.
Další informace o konceptech Služby Azure Pipelines najdete v následujícím videu:
Požadavky
| produkt | Požadavky |
|---|---|
| Azure DevOps | – projekt Azure DevOps. – Možnost spouštět potrubí na Microsoftem hostovaných agentech. Můžete si buď koupit paralelní úlohu, nebo požádat o bezplatnou úroveň. – Základní znalost YAML a Azure Pipelines. Další informace viz Vytvoření první pipeline. - Oprávnění: – Chcete-li vytvořit pipeline: Musíte být ve skupině Přispěvatelé a skupina musí mít oprávnění k vytvoření build pipeline nastavena na hodnotu Povolit. Členové skupiny Správci projektů můžou spravovat kanály. - Chcete-li vytvořit připojení služeb: Musíte mít roli |
| GitHub | – účet GitHubu. – připojení ke službě GitHub k autorizaci Azure Pipelines. |
| Azurový | Předplatné služby Azure. |
| produkt | Požadavky |
|---|---|
| Azure DevOps | – projekt Azure DevOps. - Samostatně hostovaný agent. Chcete-li ho vytvořit, podívejte se na agenty hostované na vlastním serveru. – Základní znalost YAML a Azure Pipelines. Další informace viz Vytvoření první pipeline. - Oprávnění: – Chcete-li vytvořit pipeline: Musíte být ve skupině Přispěvatelé a skupina musí mít oprávnění k vytvoření build pipeline nastavena na hodnotu Povolit. Členové skupiny Správci projektů můžou spravovat kanály. - Chcete-li vytvořit připojení služeb: Musíte mít roli |
| GitHub | – účet GitHubu. – připojení ke službě GitHub k autorizaci Azure Pipelines. |
| Azurový | Předplatné služby Azure. |
Konfigurace samohostovaného agenta
Stahování verzí Pythonu není podporováno u agentů sestavení v místním prostředí. Pokud chcete použít vlastního agenta v místním prostředí, musíte nakonfigurovat agenta pro spuštění Pythonu.
Pokud se chcete vyhnout problémům s kompatibilitou, v tomto případě se shodujte s verzí modulu runtime ve webové aplikaci 3.11 Azure App Services. Musíte předinstalovat verzi Pythonu. Pomocí úplného instalačního programu získejte verzi Pythonu kompatibilní s pipem.
Požadovaná verze Pythonu se musí přidat do mezipaměti nástrojů v místním agentu, aby ji úloha kanálu mohl používat. Mezipaměť nástrojů se obvykle nachází pod adresářem _work/_tool agenta. Alternativně můžete cestu přepsat proměnnou AGENT_TOOLSDIRECTORYprostředí . V adresáři nástrojů vytvořte následující adresářovou strukturu založenou na vaší verzi Pythonu:
$AGENT_TOOLSDIRECTORY/
Python/
{version number}/
{platform}/
{tool files}
{platform}.complete
Číslo verze by mělo odpovídat formátu 1.2.3. Platforma by měla být x86 nebo x64. Soubory nástrojů by měly být rozbalené soubory verzí Pythonu. Měl by to být nula bajtový soubor, který vypadá jako {platform}.complete nebo x86.complete a to znamená, že je nástroj správně nainstalován ve vyrovnávací paměti.
Pokud chcete například použít Python 3.11 na 64bitovém počítači s Windows, vytvořte následující adresářovou strukturu:
$AGENT_TOOLSDIRECTORY/
Python/
3.11.4/
x64/
{python files}
x64.complete
Pokud už počítač hostující agenta má verzi Pythonu, kterou chcete použít, můžete soubory zkopírovat do mezipaměti nástroje. Pokud nemáte verzi Pythonu, můžete si ji stáhnout z webu Pythonu.
Příprava ukázkové aplikace
Rozvětvěte ukázkové úložiště na https://github.com/Microsoft/python-sample-vscode-flask-tutorial ve svém účtu na GitHubu.
Naklonujte fork do místního počítače pomocí .
git clone <your-forked-repository-url>.gitPřejděte na místní klon pomocí a
cd python-sample-vscode-flask-tutorialsestavte a spusťte aplikaci místně, abyste měli jistotu, že funguje.python -m venv .env source .env/Scripts/activate pip install --upgrade pip pip install -r ./requirements.txt export FLASK_APP=hello_app.webapp flask runPokud chcete aplikaci otestovat, přejděte do http://localhost:5000 okna prohlížeče a ověřte, že se zobrazí název Visual Studio Flask Tutorial.
Zavřete okno prohlížeče a pomocí kláves Ctrl+C zastavte server Flask.
Vytvoření a nasazení webové aplikace App Service
Vytvořte webovou aplikaci Azure App Service pomocí Cloud Shellu na webu Azure Portal. Pokud chcete použít Cloud Shell, přihlaste se k webu Azure Portal a vyberte na panelu nástrojů tlačítko Cloud Shell.
Cloud Shell se zobrazí v dolní části prohlížeče. Ujistěte se, že je Bash vybraný jako prostředí v rozevírací nabídce. Okno Cloud Shellu můžete maximalizovat, abyste získali více místa.
Návod
Pokud chcete vložit do Cloud Shellu, použijte kombinaci kláves Ctrl+Shift+V nebo klikněte pravým tlačítkem myši a v místní nabídce vyberte Vložit .
Vytvoření a nasazení webové aplikace
V Cloud Shellu naklonujte forkované úložiště do Azure následujícím příkazem a nahraďte
<your-forked-repository-url>adresou URL vašeho forku úložiště.git clone <your-forked-repository-url>Změňte adresář na naklonovanou složku úložiště.
cd python-sample-vscode-flask-tutorialSpuštěním příkazu az webapp up zřiďte webovou aplikaci App Service a proveďte první nasazení. Pomocí parametru
--name <your-web-app-name>přiřaďte název, který je jedinečný v Rámci Azure, například osobní název nebo název společnosti spolu s identifikátorem aplikace, například--name <your-name>-flaskpipelines. Spuštěníaz webapp upbez parametrů přiřazuje náhodně vygenerovaný název webové aplikace, který je v Azure jedinečný.az webapp up --name <your-web-app-name>
Příkaz az webapp up rozpozná aplikaci jako aplikaci v Pythonu a provede následující akce:
- Vytvoří výchozí skupinu prostředků.
- Vytvoří výchozí plán služby App Service.
-
Vytvoří webovou aplikaci s přiřazeným názvem. Aplikace
URLje<your-web-app-name>.azurewebsites.net. - Nasadí všechny soubory z aktuálního pracovního adresáře do archivu ZIP s povolenou automatizací sestavení.
- Ukládá parametry do mezipaměti místně v souboru .azure/config , takže je nemusíte při nasazování ze složky projektu zadávat znovu pomocí
az webapp upjinýchaz webapppříkazů. Příkazy ve výchozím nastavení používají hodnoty uložené v mezipaměti automaticky.
Výchozí akce můžete přepsat vlastními hodnotami pomocí parametrů příkazu. Další informace najdete v az webapp up.
Příkaz az webapp up vytvoří následující výstup JSON pro ukázkovou webovou aplikaci:
{
"URL": <your-web-app-url>,
"appserviceplan": <your-app-service-plan-name>,
"location": <your-azure-region>,
"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>
}
Poznamenejte si URLhodnoty a hodnoty resourcegroup, runtime_version které se mají použít později v tomto kurzu.
Nastavení spouštěcího příkazu
Aplikace python-sample-vscode-flask-tutorial obsahuje startup.txt soubor, který obsahuje konkrétní spouštěcí příkaz pro webovou aplikaci. Nastavte vlastnost startup-file konfigurace webové aplikace startup.txt tak, že zadáte následující příkaz a použijete názvy skupin prostředků a webových aplikací.
az webapp config set --resource-group <your-resource-group> --name <your-web-app-name> --startup-file startup.txt
Po dokončení příkazu se ve výstupu JSON zobrazí všechna nastavení konfigurace vaší webové aplikace.
Pokud chcete zobrazit spuštěnou aplikaci, otevřete prohlížeč a přejděte na URL ve výstupu příkazu. Pokud se zobrazí obecná stránka, počkejte několik sekund, než se služba App Service spustí, a pak stránku aktualizujte. Ověřte, že se zobrazí název Visual Studio Flask Tutorial.
Připojení projektu Azure DevOps k předplatnému Azure
Pokud chcete k nasazení do webové aplikace Azure App Service použít Azure Pipelines, musíte svůj projekt Azure DevOps připojit k prostředkům Azure.
Vytvoření principálu služby
Instanční objekt je identita vytvořená pro aplikace, hostované služby a automatizované nástroje pro přístup k prostředkům Azure. Tento přístup je omezený na role přiřazené k instančnímu objektu a poskytuje vám kontrolu nad tím, ke kterým prostředkům je možné přistupovat na jaké úrovni.
Pokud chcete vytvořit instanční objekt, spusťte v Prostředí Bash Cloud Shell následující příkaz. Nahraďte <service-principal-name> názvem vašeho instančního objektu, <your-subscription-id> ID předplatného Azure a <your-resource-group> skupinou prostředků pro webovou aplikaci.
az ad sp create-for-rbac --display-name <service-principal-name> --role contributor --scopes /subscriptions/<your-subscription-id>/resourceGroups/<your-resource-group>
Příkaz vrátí následující objekt JSON:
{
"appId": "<client GUID>",
"displayName": "<service-principal-name">,
"password": "<password-string>",
"tenant": "<tenant GUID>"
...
}
Poznamenejte appIdsi hodnoty a passwordhodnoty, tenantId které se mají použít k vytvoření připojení služby v další části.
Vytvořte připojení služby
Připojení služby poskytuje ověřený přístup ze služby Azure Pipelines k externím a vzdáleným službám. Pokud chcete nasadit do webové aplikace Azure App Service, vytvořte připojení služby ke skupině prostředků vaší webové aplikace.
Na stránce projektu Azure DevOps vyberte Nastavení projektu.
V nastavení projektu vybertepřipojení služby> Service.
Na stránce Připojení služby vyberte Nové připojení služby nebo Vytvořit připojení služby , pokud je toto připojení služby první v projektu.
Na obrazovce Připojení k nové službě vyberte Azure Resource Manager a pak vyberte Další.
Na obrazovce Připojení k nové službě Azure vyberte typ identity. V tomto příkladu se používá registrace aplikace (automatická), která se doporučuje. Další informace o metodách ověřování najdete v tématu Připojení k Azure pomocí připojení služby Azure Resource Manager.
U přihlašovacích údajů vyberte Federaci identit úloh (automaticky).
Vyplňte následující pole:
- Úroveň oboru: Vyberte předplatné.
- Předplatné: Vyberte své předplatné Azure.
- Skupina prostředků: Vyberte skupinu prostředků, která obsahuje vaši webovou aplikaci.
- Název připojení služby: Zadejte popisný název připojení.
- Udělte přístupová oprávnění všem kanálům: Toto políčko zaškrtněte, pokud chcete udělit přístup ke všem kanálům v projektu.
Zvolte Uložit.
Na stránce projektu Azure DevOps vyberte Nastavení projektu.
V nastavení projektu vybertepřipojení služby> Service.
Na stránce Připojení služby vyberte Nové připojení služby nebo Vytvořit připojení služby , pokud je toto připojení služby první v projektu.
Na obrazovce Připojení k nové službě vyberte Azure Resource Manager a pak vyberte Další.
Vyberte Instanční objekt (ruční) a pak vyberte Další.
Na obrazovce Připojení k nové službě Azure vyplňte následující pole:
- Prostředí: Vyberte Azure Cloud.
- Úroveň oboru: Vyberte předplatné.
- ID předplatného: Zadejte ID předplatného Azure.
- Název předplatného: Zadejte název předplatného Azure.
V části Ověřování vyplňte následující pole:
-
ID instančního
appIdobjektu: Zadejte hodnotu vrácenou příkazemaz ad sp create-for-rbac. - Přihlašovací údaje: Vyberte klíč instančního objektu.
-
Klíč instančního
passwordobjektu: Zadejte hodnotu vrácenou příkazemaz ad sp create-for-rbac. -
ID tenanta: Zadejte
tenanthodnotu vrácenou příkazemaz ad sp create-for-rbac. - Výběrem možnosti Ověřit ověřte připojení.
-
ID instančního
V části Podrobnosti v části Název připojení služby zadejte název připojení služby.
Zaškrtněte políčko Udělovat přístupová oprávnění všem kanálům.
Vyberte Ověřit a uložit.
Nové připojení se zobrazí v seznamu připojení služby a je připravené k použití ve vašem kanálu.
Vytvořit potrubí
Vytvořte kanál pro sestavení a nasazení webové aplikace v Pythonu do služby Aplikace Azure Service.
V levé navigační nabídce projektu vyberte Kanály.
Na stránce Pipelines (Kanály ) vyberte New pipeline (Nový kanál) nebo Create pipeline (Vytvořit kanál , pokud je tento kanál v projektu prvním kanálem).
Na obrazovce Kde je váš kód , vyberte GitHub. Může se zobrazit výzva k přihlášení k GitHubu.
Na obrazovce Vybrat úložiště vyberte svůj forkovaný ukázkový úložiště. GitHub vás může vyzvat k opětovnému zadání hesla GitHubu nebo k instalaci aplikace Azure Pipelines Na GitHubu. Nainstalujte aplikaci podle pokynů na obrazovce. Další informace najdete v tématu Ověřování aplikací GitHubu.
Na stránce Konfigurace kanálu vyberte Python do linuxové webové aplikace v Azure.
Na další obrazovce vyberte své předplatné Azure a vyberte Pokračovat.
Na další obrazovce vyberte webovou aplikaci Azure a vyberte Ověřit a nakonfigurovat.
Azure Pipelines vytvoří soubor azure-pipelines.yml a zobrazí ho v editoru kanálů YAML.
V levé navigační nabídce projektu vyberte Kanály.
Na stránce Pipelines (Kanály ) vyberte New pipeline (Nový kanál) nebo Create pipeline (Vytvořit kanál , pokud je tento kanál v projektu prvním kanálem).
Na stránce Kde je kód , vyberte GitHub Enterprise Server. Může se zobrazit výzva k přihlášení k GitHubu.
Na kartě Vybrat úložiště vyberte forkované ukázkové úložiště. GitHub vás může vyzvat, abyste znovu zadali heslo GitHubu nebo nainstalovali rozšíření Nebo aplikaci Azure Pipelines na GitHubu. Nainstalujte aplikaci podle pokynů na obrazovce. Další informace najdete v tématu Přístup k úložištím GitHub.
Na stránce Konfigurace kanálu vyberte Počáteční kanál.
Na stránce Kontrola kanálu YAML nahraďte obsah úvodního azure-pipelines.yml souboru následujícím souborem kanálu YAML. V souboru YAML:
<your-service-connection-name>Nahraďte zástupné<your-web-app-name>symboly vlastními hodnotami.Nahraďte
<your-pool-name>názvem fondu agentů, který chcete použít, a nahraďte<your-python-version>verzí Pythonu spuštěnou ve vašem agentu. Tato verze by se měla shodovat s výstupemruntime_versionaz webapp upJSON příkazu.
Soubor potrubí YAML
Na stránce Kontrola kanálu YAML se podívejte na kanál a podívejte se, co dělá. Ujistěte se, že jsou všechny výchozí vstupy vhodné pro váš kód. Informace o schématu souboru YAML kanálu najdete v referenčních informacích ke schématu YAML.
Následující úplný příklad souboru kanálu YAML definuje kanál CI/CD jako řadu fází, úloh a kroků, kde každý krok obsahuje podrobnosti o různých úlohách a skriptech. Vygenerovaný kód YAML automaticky naplní zástupné symboly hodnotami pro vaši aplikaci a připojení.
trigger:
- main
variables:
# Azure Resource Manager connection created during pipeline creation
azureServiceConnectionId: '<GUID>'
# Web app name
webAppName: '<your-webapp-name>'
# Agent VM image name
vmImageName: 'ubuntu-latest'
# Environment name
environmentName: '<your-webapp-name>'
# Project root folder. Point to the folder containing manage.py file.
projectRoot: $(System.DefaultWorkingDirectory)
pythonVersion: '3.11'
stages:
- stage: Build
displayName: Build stage
jobs:
- job: BuildJob
pool:
vmImage: $(vmImageName)
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 setuptools
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
- upload: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
displayName: 'Upload package'
artifact: drop
- stage: Deploy
displayName: 'Deploy Web App'
dependsOn: Build
condition: succeeded()
jobs:
- deployment: DeploymentJob
pool:
vmImage: $(vmImageName)
environment: $(environmentName)
strategy:
runOnce:
deploy:
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '$(pythonVersion)'
displayName: 'Use Python version'
- task: AzureWebApp@1
displayName: 'Deploy Azure Web App : $(webAppName)'
inputs:
azureSubscription: $(azureServiceConnectionId)
appName: $(webAppName)
package: $(Pipeline.Workspace)/drop/$(Build.BuildId).zip
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 -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'
Proměnné
Oddíl variables na začátku souboru YAML definuje následující proměnné:
| Proměnná | Popis |
|---|---|
azureServiceConnectionId |
ID připojení služby Azure Resource Manager. |
webAppName |
Název webové aplikace App Service |
vmImageName |
Název operačního systému, který má být použit pro agenta sestavování. |
environmentName |
Název prostředí, do kterého se má nasadit, se automaticky vytvoří při spuštění úlohy nasazení. |
projectRoot |
Kořenová složka obsahující kód aplikace. |
pythonVersion |
Verze Pythonu, kterou mají používat agenty pro sestavení a nasazení. |
| Proměnná | Popis |
|---|---|
azureServiceConnectionId |
ID připojení služby Azure Resource Manager. |
webAppName |
Název webové aplikace App Service |
environmentName |
Název prostředí, do kterého se má nasadit, se automaticky vytvoří při spuštění úlohy nasazení. |
projectRoot |
Složka obsahující kód aplikace. Hodnota je automatická systémová proměnná. |
pythonVersion |
Verze Pythonu, kterou mají používat agenty pro sestavení a nasazení. |
Fáze sestavení a nasazení
Kanál se skládá z fází sestavení a nasazení.
Fáze vytváření
Fáze sestavení obsahuje jednu úlohu, která běží v operačním systému definovaném vmImageName v proměnné, v tomto případě ubuntu-latest.
- job: BuildJob
pool:
vmImage: $(vmImageName)
Fáze sestavení obsahuje jednu úlohu, která běží na agentu pool v identifikovaném parametrem name .
Funkce agenta můžete zadat pomocí klíčového demands slova. Určuje například, demands: python že agent musí mít nainstalovaný Python. Pokud chcete zadat agenta v místním prostředí podle názvu, můžete použít demands: Agent.Name -equals <agent-name>.
- job: BuildJob
pool:
name: <your-pool-name>
demands: python
Úloha obsahuje několik kroků:
Nejprve úloha UsePythonVersion vybere verzi Pythonu, která se má použít, jak je definována
pythonVersionv proměnné.- task: UsePythonVersion@0 inputs: versionSpec: '$(pythonVersion)' displayName: 'Use Python $(pythonVersion)'V dalším kroku se používá skript, který vytvoří virtuální prostředí Pythonu a nainstaluje závislosti aplikace z
requirements.txt. ParametrworkingDirectoryurčuje umístění kódu aplikace.- script: | python -m venv antenv source antenv/bin/activate python -m pip install --upgrade pip pip install setuptools pip install -r ./requirements.txt workingDirectory: $(projectRoot) displayName: "Install requirements"Úloha ArchiveFiles vytvoří archiv ZIP, který obsahuje vytvořenou webovou aplikaci.
- task: ArchiveFiles@2 displayName: 'Archive files' inputs: rootFolderOrFile: '$(projectRoot)' includeRootFolder: false archiveType: zip archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip replaceExistingArchive: trueParametry jsou nastaveny takto:
Parametr Popis rootFolderOrFileUmístění kódu aplikace. includeRootFolderZda zahrnout kořenovou složku do souboru.zip . Nastavte na false. Pokud je nastavená hodnotatrue, obsah souboru .zip se vloží do složky s názvem s a úloha nemůže najít kód aplikace.archiveTypeTyp archivu, který chcete vytvořit. Nastavte na zip.archiveFileUmístění souboru .zip , který se má vytvořit. replaceExistingArchiveUrčuje, zda se má nahradit existující archiv, pokud soubor již existuje. Nastavte na true.Soubor
.zipse pak nahraje do kanálu jako artefakt s názvemdrop. Fáze nasazení používá k nasazení aplikace soubor .zip .- upload: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip displayName: 'Upload package' artifact: drop- Parametr
uploadnastaví umístění a název souboru.zip k nahrání. - Parametr
artifactnastaví název vytvořeného artefaktu nadrop.
- Parametr
Fáze nasazení
Fáze nasazení se spustí, pokud se fáze sestavení úspěšně dokončí. Toto dependsOn chování definují klíčová slova.condition
dependsOn: Build
condition: succeeded()
Fáze nasazení obsahuje jednu úlohu nasazení nakonfigurovanou následujícím způsobem.
- deployment: DeploymentJob
pool:
vmImage: $(vmImageName)
environment: $(environmentName)
Klíčové
deploymentslovo označuje, že úloha je úloha, která cílí na prostředí , do kterého se má nasadit. Přienvironmentspuštění úlohy se ve vašem projektu automaticky vytvoří.Parametr
poolurčuje fond agentů nasazení a používá výchozí fond agentů, pokudnamenení zadaný. Agent běží v operačním systému definovanémvmImageNamev proměnné, v tomto případěubuntu-latest.
- deployment: DeploymentJob
pool:
name: <your-pool-name>
environment: $(environmentName)
Klíčové strategy slovo definuje strategii nasazení.
strategy:
runOnce:
deploy:
steps:
- Klíčové slovo
runOnceurčuje, že se úloha nasazení spustí pouze jednou. - Klíčové
deployslovo určujestepsspuštění v úloze nasazení.
V steps této fázi spusťte následující úlohy:
- UsePythonVersion@0 vybere verzi Pythonu, která se má použít, stejně jako ve fázi sestavení.
-
AzureWebApp@1 nasadí webovou aplikaci a
dropartefakt ZIP.
- task: AzureWebApp@1
displayName: 'Deploy Azure Web App : <your-web-app-name>'
inputs:
azureSubscription: $(azureServiceConnectionId)
appName: $(webAppName)
package: $(Pipeline.Workspace)/drop/$(Build.BuildId).zip
- Parametr
azureSubscriptionobsahujeazureServiceConnectionIdzadané proměnné kanálu. - Obsahuje
appNamehodnotuwebAppNameproměnné. - Určuje
packagenázev a umístění souboru.zip , který se má nasadit.
Vzhledem k tomu, že úložiště python-vscode-flask-tutorial obsahuje spouštěcí příkaz aplikace v souboru s názvem startup.txt, můžete zadat spouštěcí příkaz aplikace přidáním parametru: startUpCommand: 'startup.txt'.
Spustit potrubí
Teď můžete kanál vyzkoušet.
V editoru kanálů vyberte Uložit a spustit.
Na obrazovce Uložit a spustit přidejte v případě potřeby zprávu potvrzení a pak vyberte Uložit a spustit.
Spuštění kanálu můžete sledovat výběrem dílčích fází nebo úloh na stránce Souhrn kanálu. Každá úloha a fáze zobrazí při úspěšném dokončení zelenou značku zaškrtnutí. Pokud dojde k chybám, zobrazí se v souhrnu nebo v krocích úlohy.
Do editoru YAML se můžete rychle vrátit tak, že vyberete svislé tečky v pravém horním rohu na stránce Souhrn a vyberete Upravit kanál.
V úloze nasazení vyberte úlohu Deploy Azure Web App (Nasadit webovou aplikaci Azure) a zobrazte její výstup.
Ve výstupu vyberte adresu URL za adresou URL aplikace služby App Service. Aplikace by se měla zobrazit takto:
Poznámka:
Pokud nasazení aplikace selže kvůli chybějící závislosti, souborrequirements.txt se během nasazování nezpracoval. K tomuto problému může dojít v případě, že webovou aplikaci vytvoříte přímo na portálu az webapp up , a ne pomocí příkazu.
Příkaz az webapp up nastaví konkrétně akci sestavení SCM_DO_BUILD_DURING_DEPLOYMENT na true. Pokud zřídíte službu App Service prostřednictvím portálu, tato akce se nenastaví automaticky.
Nastavení této akce:
- Na stránce portálu vaší webové aplikace vyberte v levé navigační nabídce možnost Konfigurace .
- Na kartě Nastavení aplikace vyberte Nové nastavení aplikace.
- V místní nabídce, která se zobrazí, nastavte Název na
SCM_DO_BUILD_DURING_DEPLOYMENT, nastavte Hodnotu natruea vyberte OK. - V horní části stránky Konfigurace vyberte Uložit.
- Opětovné spuštění kanálu Závislosti by se teď měly nainstalovat během nasazení.
Aktivace spuštění kanálu
Tento kanál se nastaví tak, aby se spustil při každé kontrole změn v úložišti kódu. Pro spuštění pipeline proveďte změnu v úložišti. Můžete například do aplikace přidat novou funkci nebo aktualizovat závislosti aplikace.
- Přejděte do úložiště GitHub pro vaši aplikaci.
- Změňte kód, například změňte název aplikace.
- Potvrďte změnu.
- Přejděte do kanálu a ověřte, že je vytvořené a spuštěné nové spuštění.
- Po dokončení spuštění ověřte, že se změna nasadila do vaší webové aplikace.
- Na webu Azure Portal přejděte do webové aplikace a v levé navigační nabídce vyberte Deployment Center .
- Vyberte kartu Protokoly a ověřte, že je uvedené nové nasazení.
Nasazení aplikací Django do služby App Service
Pokud používáte samostatnou databázi, můžete pomocí Azure Pipelines nasadit aplikace Django do služby App Service v Linuxu. Databázi SQLite nemůžete použít, protože App Service uzamkne soubor db.sqlite3 , což brání čtení i zápisu. Toto chování nemá vliv na externí databáze.
Jak je vysvětleno v procesu spuštění kontejneru, App Service automaticky hledá soubor wsgi.py v kódu aplikace, který obvykle obsahuje objekt aplikace. Pokud chcete přizpůsobit spouštěcí příkaz, použijte startUpCommand parametr v AzureWebApp@1 kroku souboru kanálu YAML.
Když používáte Django, obvykle chcete migrovat datové modely pomocí manage.py migrate po nasazení kódu aplikace. Můžete přidat skript po nasazení startUpCommand k tomuto účelu. Tady je například startUpCommand vlastnost v úloze AzureWebApp@1.
- 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'
Spouštění testů na agentu sestavení
V rámci procesu sestavení můžete chtít spouštět testy kódu aplikace. Testy běží na agentu sestavení, takže je potřeba nainstalovat závislosti do virtuálního prostředí na agenta sestavení. Po spuštění testů odstraňte testovací virtuální prostředí před vytvořením souboru.zip pro nasazení.
Tento proces ilustrují následující prvky skriptu. Umístěte je do souboru ArchiveFiles@2 před úkol . Další informace najdete v tématu Spouštění skriptů pro různé platformy.
# 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'
K publikování výsledků testu do vaší pipeline můžete použít také úlohu, jako je PublishTestResults@2. Další informace naleznete v tématu Spouštění testů.
Vyčištění prostředků
Pokud jste dokončili prostředky Azure, které jste vytvořili v tomto kurzu, odstraňte je, abyste se vyhnuli dalším poplatkům.
- Odstraňte projekt Azure DevOps, který jste vytvořili. Odstraněním projektu se odstraní datový tok a připojení služby.
- Odstraňte skupinu prostředků Azure, která obsahuje službu App Service a plán služby App Service. Na webu Azure Portal přejděte do skupiny prostředků, vyberte Odstranit skupinu prostředků a postupujte podle pokynů.
- Odstraňte účet úložiště Azure, který udržuje systém souborů Cloud Shellu. Zavřete Cloud Shell a vyhledejte skupinu prostředků, která začíná cloud-shell-storage-. Vyberte Odstranit skupinu prostředků a postupujte podle pokynů.