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.
Azure DevOps Services | Azure DevOps Server 2022
Tento článek vysvětluje, jak pomocí Azure Pipelines automaticky vytvářet, testovat a nasazovat webovou aplikaci do služby Azure App Service. Můžete nastavit kanál kontinuální integrace a průběžného doručování (CI/CD), který se spustí při každém vrácení změny kódu do určené větve úložiště.
Kanály se skládají z fází, úloh a kroků. Krok je nejmenší stavební blok kanálu a může to být skript nebo úloha, což je předbalený skript. Další informace o klíčových konceptech a komponentách, které tvoří kanál, najdete v tématu Klíčové koncepty Azure Pipelines.
Úlohu Webové aplikace Azure v kanálu můžete použít k nasazení do služby App Service. Pro složitější scénáře, jako je použití parametrů XML v nasazeních, můžete použít úlohu nasazení služby Azure App Service .
Požadavky
Funkční aplikace Azure App Service s kódem hostovaným na GitHubu nebo Azure Repos. K vytvoření ukázkové aplikace můžete použít některý z následujících článků rychlého startu:
- ASP.NET Core: Vytvoření webové aplikace ASP.NET Core v Azure
- ASP.NET: Vytvoření webové aplikace ASP.NET Framework v Azure
- JavaScript: Vytvoření webové aplikace Node.js ve službě Azure App Service
- Java: Vytvoření aplikace v Javě ve službě Azure App Service
- Python: Vytvoření aplikace v Pythonu ve službě Azure App Service
Organizace Azure DevOps, která má možnost spouštět kanály na agentech hostovaných Microsoftem. Potřebujete požádat o úroveň Free paralelních úloh nebo zakoupit paralelní úlohy. Další informace najdete v tématu Konfigurace a platba za paralelní úlohy.
Projekt vytvořený v organizaci Azure DevOps, kde máte oprávnění k vytváření a autorizaci kanálů a připojení služeb Azure. Vytvoření projektu v Azure DevOps.
Důležité
Během postupů GitHubu se může zobrazit výzva k vytvoření připojení ke službě GitHub nebo k přesměrování na GitHub, abyste se mohli přihlásit, nainstalovat aplikaci Azure Pipelines GitHub, autorizovat Službu Azure Pipelines nebo ověřit v organizacích GitHubu. Podle pokynů na obrazovce dokončete potřebné procesy. Další informace najdete v tématu Přístup k úložištím GitHub.
Vytvořit potrubí
Příklady kódu v této části jsou určené pro webovou aplikaci ASP.NET Core. Pokyny pro další architektury můžete přizpůsobit. Další informace o podpoře ekosystému Azure Pipelines najdete v příkladech ekosystému Azure Pipelines.
- YAML
- Klasické
Definujte kanál vytvořením souboru YAML azure-pipelines.yml v úložišti kódu.
- V levé navigační nabídce projektu Azure DevOps 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 kód , vyberte umístění zdrojového kódu, a to buď Git Azure Repos , nebo GitHub. V případě potřeby se přihlaste k GitHubu.
- Na obrazovce Vybrat úložiště vyberte úložiště kódu.
- Na obrazovce Konfigurace kanálu vyberte Počáteční kanál.
Přidejte do kanálu úlohu .NET Core (DotNetCoreCLI@2) a sestavte a publikujte aplikaci.
- Na obrazovce Zkontrolovat kanál YAML odstraňte veškerý kód za řádkem
steps:. - Vyberte konec souboru a pak vpravo vyberte Zobrazit asistenta .
- V části Úlohy vyberte .NET Core.
- Na obrazovce konfigurace .NET Core v části Připojení k Azure Resource Manageru vyberte předplatné Azure a pak vyberte Autorizovat , abyste vytvořili požadované připojení služby.
- V části Příkaz vyberte publikovat.
- Ujistěte se, že jsou zaškrtnutá políčka Publikovat webové projekty a Zip publikované projekty , a pak vyberte Přidat.
- Úloha se zobrazí v kanálu YAML. Zkontrolujte kód YAML a zjistěte, co dělá. Až budete připraveni, vyberte Uložit a spustit a pak vyberte Uložit a spustit znovu.
- Na obrazovce Souhrn sestavení v části Úlohy vyberte odkaz Potřebné oprávnění . Na obrazovce Kontroly vyberte Povolit a pak znovu vyberte Povolit . Udělení oprávnění zde umožňuje používat připojení služby, které jste autorizovali pro všechna spuštění tohoto kanálu.
Kanál publikuje soubor ZIP nasazení jako artefakt Azure pro úlohu nasazení, která se použije v dalším kroku.
Přidání úlohy nasazení
Po úspěšném spuštění kanálu přidejte úlohu nasazení.
- YAML
- Klasické
- Na obrazovce Souhrn spuštění kanálu vyberte ikonu Další akce v pravém horním rohu a pak vyberte Upravit kanál.
- Vyberte konec souboru YAML a vyberte Zobrazit asistenta , pokud se seznam úkolů nezobrazuje.
- V seznamu Úkolů vyhledejte a vyberte úlohu Webové aplikace Azure . Případně můžete použít úlohu nasazení služby Azure App Service .
- Na obrazovce konfigurace webové aplikace Azure v části Předplatné Azure vyberte stejné připojení služby, které jste nastavili pro předchozí krok. Toto připojení nemusíte znovu autorizovat.
- Jako typ aplikace vyberte Azure Web App v Linuxu nebo Azure Web Appu ve Windows v závislosti na vašem kódu.
- Jako název aplikace vyberte nebo zadejte název aplikace služby App Service.
- Vyberte Přidat.
- Vyberte Ověřit a uložit a pak vyberte Uložit.
- Vyberte Spustit a pak vyberte Spustit znovu.
Kompletní kanál YAML by měl vypadat jako následující kód:
trigger:
- <branch-specification>
pool:
vmImage: <agent-specification>
steps:
- task: DotNetCoreCLI@2
inputs:
azureSubscription: '<your-authorized-service-connection>'
command: 'publish'
publishWebProjects: true
- task: AzureWebApp@1
inputs:
azureSubscription: '<your-authorized-service-connection>'
appType: 'webApp'
appName: '<your-app-name>'
package: '$(System.DefaultWorkingDirectory)/**/*.zip'
deploymentMethod: 'auto'
-
azureSubscription: Název autorizovaného připojení služby k vašemu předplatnému Azure. -
appName: Název existující aplikace. -
package: Cesta k souboru k balíčku nebo složce obsahující obsah služby App Service. Zástupné znaky jsou podporovány.
Examples
Následující části diskutují o vytváření různých druhů kanálů sestavení a verzí.
Nasazení do virtuální aplikace
- YAML
- Klasické
Úloha Webové aplikace Azure se nasadí do kořenové aplikace ve webové aplikaci Azure. Nasazení do konkrétní virtuální aplikace můžete provést pomocí VirtualApplication vlastnosti úlohy nasazení služby Azure App Service .
- task: AzureRmWebAppDeployment@5
inputs:
VirtualApplication: '<name of virtual application>'
VirtualApplication je název virtuální aplikace nakonfigurované na webu Azure Portal. Další informace najdete v tématu Konfigurace aplikace App Service na webu Azure Portal.
Nasazení do slotu
- YAML
- Klasické
Následující příklad ukazuje, jak nasadit do testovacího slotu a poté přepnout na produkční slot:
- task: AzureWebApp@1
inputs:
azureSubscription: '<service-connection-name>'
appType: webAppLinux
appName: '<app-name>'
deployToSlotOrASE: true
resourceGroupName: '<name of resource group>'
slotName: staging
package: '$(Build.ArtifactStagingDirectory)/**/*.zip'
- task: AzureAppServiceManage@0
inputs:
azureSubscription: '<service-connection-name>'
WebAppName: '<app-name>'
ResourceGroupName: '<name of resource group>'
SourceSlot: staging
SwapWithProduction: true
-
azureSubscription: Vaše připojení ke službě Azure. -
appType: Volitelný typ aplikace, jakowebAppLinuxje nasazení do webové aplikace v Linuxu. -
appName: Název existující aplikace. -
deployToSlotOrASE: boolean. Určuje, jestli se má nasadit do existujícího slotu nasazení nebo do služby App Service Environment. -
resourceGroupName: Název skupiny prostředků, do které se má nasadit, vyžaduje se, pokuddeployToSlotOrASEje true. -
slotName: Název slotu, do který se má nasadit, vyžaduje se, pokuddeployToSlotOrASEje true. Výchozí hodnota jeproduction. -
package: Cesta k souboru balíčku nebo složky obsahující obsah aplikace. Zástupné znaky jsou podporovány. -
SourceSlot: Slot se odešle do produkčního prostředí, pokudSwapWithProductionje true. -
SwapWithProduction: boolean. Určuje, jestli se má prohodit provoz zdrojového slotu s produkčním prostředím.
Nasazení do několika webových aplikací
- YAML
- Klasické
Pomocí úloh v souboru YAML můžete nastavit nasazovací kanál. Pomocí úloh můžete řídit pořadí nasazení do více webových aplikací.
jobs:
- job: buildandtest
pool:
vmImage: ubuntu-latest
steps:
# publish an artifact called drop
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(Build.ArtifactStagingDirectory)'
artifactName: drop
# deploy to Azure Web App staging
- task: AzureWebApp@1
inputs:
azureSubscription: '<service-connection-name>'
appType: <app type>
appName: '<staging-app-name>'
deployToSlotOrASE: true
resourceGroupName: <group-name>
slotName: 'staging'
package: '$(Build.ArtifactStagingDirectory)/**/*.zip'
- job: deploy
dependsOn: buildandtest
condition: succeeded()
pool:
vmImage: ubuntu-latest
steps:
# download the artifact drop from the previous job
- task: DownloadPipelineArtifact@2
inputs:
source: 'current'
artifact: 'drop'
path: '$(Pipeline.Workspace)'
- task: AzureWebApp@1
inputs:
azureSubscription: '<service-connection-name>'
appType: <app type>
appName: '<production-app-name>'
resourceGroupName: <group-name>
package: '$(Pipeline.Workspace)/**/*.zip'
Podmíněné nasazení
- YAML
- Klasické
K podmíněnému nasazení v YAML použijte jednu z následujících technik:
- Přidejte do kroku podmínku.
- Izolujte kroky nasazení do samostatné úlohy a přidejte do této úlohy podmínku.
Následující příklad ukazuje, jak pomocí podmínek kroku nasadit pouze úspěšná sestavení pocházející z hlavní větve:
- task: AzureWebApp@1
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))
inputs:
azureSubscription: '<service-connection-name>'
appName: '<app-name>'
Další informace o podmínkách naleznete v tématu Zadání podmínek.
Nasazení pomocí nasazení webu
Úloha nasazení služby Azure App Service se dá nasadit do služby App Service pomocí nasazení webu.
- YAML
- Klasické
trigger:
- main
pool:
vmImage: windows-latest
variables:
buildConfiguration: 'Release'
steps:
- task: DotNetCoreCLI@2
inputs:
command: 'publish'
publishWebProjects: true
arguments: '--configuration $(buildConfiguration)'
zipAfterPublish: true
- task: AzureRmWebAppDeployment@5
inputs:
ConnectionType: 'AzureRM'
azureSubscription: '<service-connection-name>'
appType: 'webApp'
WebAppName: '<app-name>'
packageForLinux: '$(System.DefaultWorkingDirectory)/**/*.zip'
enableCustomDeployment: true
DeploymentType: 'webDeploy'
Nejčastější dotazy
Jaký je rozdíl mezi úlohami AzureWebApp a AzureRmWebAppDeployment?
Úkolem webové aplikace Azure je nejjednodušší způsob nasazení do webové aplikace Azure. Ve výchozím nastavení nasadíte kořenovou aplikaci do webové aplikace Azure.
Úloha nasazení služby Azure App Service může zpracovávat další vlastní scénáře, například:
- Nasaďte pomocí Web Deploy, pokud obvykle používáte proces nasazení Internetových informačních služeb (IIS).
- Nasazení do virtuálních aplikací
- Nasaďte je do jiných typů aplikací, jako jsou aplikace kontejnerů, aplikace funkcí, webové úlohy nebo rozhraní API a mobilní aplikace.
Poznámka:
Samostatná úloha Transformace souborů podporuje také transformace souborů a nahrazení proměnných pro použití v Azure Pipelines. Úlohu Transformace souborů můžete použít k použití transformací souborů a nahrazení proměnných u všech souborů konfigurace a parametrů.
Proč se mi zobrazí zpráva "Je k dispozici neplatná cesta balíčku nebo složky služby App Service"?
V kanálech YAML může dojít k neshodě mezi umístěním, kde je uložený sestavený webový balíček, a umístěním, kde ji úloha nasazení hledá. Výchozí úloha AzureWebApp převezme webový balíček pro nasazení z $(System.DefaultWorkingDirectory)/**/*.zip. Pokud je webový balíček uložen jinde, upravte hodnotu parametru package .
Proč se mi zobrazí zpráva "Publikování pomocí možností webdeploy se podporuje jenom při použití agenta Windows"?
K této chybě dochází v úloze AzureRmWebAppDeployment při konfiguraci úlohy pro nasazení pomocí nasazení webu, ale váš agent není spuštěný ve Windows. Ověřte, že parametr YAML vmImage určuje Windows.
pool:
vmImage: windows-latest
Proč nasazení webu nefunguje, když zakážem základní ověřování?
Informace o řešení potíží se získáním ověřování Microsoft Entra ID pro práci s úlohou nasazení služby Azure App Service najdete v tématu Nejde mi nasadit web do služby Azure App Service pomocí ověřování Microsoft Entra ID z agenta Windows.