使用 Terraform 和 Azure DevOps 的 Azure Web App CI/CD 部署

发布: (2026年1月31日 GMT+8 21:33)
3 min read
原文: Dev.to

Source: Dev.to

介绍

本项目演示了一个端到端的 DevOps 工作流,用于将 Web 应用部署到 Microsoft Azure。基础设施使用 Terraform 进行供应,应用部署通过 Azure DevOps CI/CD 流水线实现自动化。

目标是展示基础设施即代码(IaC)、流水线自动化以及使用 Azure App Service 的云原生部署。

概念

Azure App Service: 一个完全托管的平台,用于构建、部署和扩展 Web 应用和 API。它支持多种语言和框架,提供内置的基础设施维护、安全补丁和扩展能力。

Azure Web App: 基于 HTTP 的服务,用于托管 Web 应用、REST API 和移动后端。它是托管在 App Service 平台上的一种特定类型的应用。

前置条件

  • Azure 订阅
  • Azure DevOps 组织
  • Azure DevOps 仓库
  • 具备足够权限的 Azure Service Connection
  • 已安装 Terraform(v1.x)

仓库 Azure DevOps 结构

AzureAppService/
├── index.html
└── azure-pipeline.yml

步骤 1:准备 Terraform 配置文件

以下 Terraform 配置会供应托管 Web 应用所需的 Azure 基础设施。

terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~> 3.0"
    }
  }
}

provider "azurerm" {
  features {}
}

resource "azurerm_resource_group" "main" {
  name     = "Hawkins"
  location = "West Europe"
}

resource "azurerm_app_service_plan" "main" {
  name                = "asp-devops-lab"
  location            = azurerm_resource_group.main.location
  resource_group_name = azurerm_resource_group.main.name
  sku {
    tier = "Free"
    size = "F1"
  }
}

resource "azurerm_app_service" "webapp" {
  name                = "webapp-devops-lab-2026"
  location            = azurerm_resource_group.main.location
  resource_group_name = azurerm_resource_group.main.name
  app_service_plan_id = azurerm_app_service_plan.main.id
}

步骤 2:Terraform 命令

terraform init
terraform plan
terraform apply

步骤 3:为 Azure DevOps 创建文件

流水线会打包 Web 应用并通过 Azure Service Connection 部署到 Azure App Service。

trigger:
  branches:
    include:
      - main

pool:
  vmImage: 'ubuntu-latest'

steps:
- task: ArchiveFiles@2
  inputs:
    rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
    includeRootFolder: false
    archiveType: 'zip'
    archiveFile: '$(Build.ArtifactStagingDirectory)/webapp.zip'
    replaceExistingArchive: true

- task: AzureWebApp@1
  inputs:
    azureSubscription: 'Thor-Service-Connection'
    appName: 'webapp-devops-lab-2026'
    package: '$(Build.ArtifactStagingDirectory)/webapp.zip'

步骤 4:部署应用

在 Azure DevOps 中运行流水线。流水线将自动打包并部署 Web 应用。

流水线部署概览

步骤 5:验证部署

流水线完成后,验证 Web 应用是否可以通过其 Azure App Service URL 访问。

部署验证截图

Back to Blog

相关文章

阅读更多 »