You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure DevOps同一YAML脚本可否同时包含Build和Release?求多环境部署示例

Azure DevOps 同YAML配置Build+多环境Release流程解答

支持性说明

是支持的,你可以用Azure DevOps的多阶段YAML流水线实现构建、多环境发布全流程在同一个YAML文件中定义,原本可视化Release管道支持的环境审批、部署策略、环境变量隔离等能力,都可以在YAML中直接配置使用。

示例YAML脚本

以下是包含构建环节、dev/test/prod三个环境部署环节的完整示例,你可以根据自己的技术栈调整对应的构建、部署步骤:

# 触发分支规则,可根据实际需求修改
trigger:
  - main

# 代理池配置,用微软托管代理或者私有代理都可以
pool:
  vmImage: ubuntu-latest

# 全局变量,也可以引用变量组存储敏感配置
variables:
  buildConfiguration: 'Release'
  # 不同环境的应用名,你可以改成自己的资源名
  devAppName: 'myapp-dev'
  testAppName: 'myapp-test'
  prodAppName: 'myapp-prod'

stages:
# 1. Build阶段:构建代码、产出部署构件
- stage: Build
  jobs:
  - job: BuildJob
    steps:
    # 示例为.NET项目构建,可替换为你的技术栈构建逻辑
    - task: DotNetCoreCLI@2
      inputs:
        command: 'build'
        projects: '**/*.csproj'
        arguments: '--configuration $(buildConfiguration)'
    
    # 发布构建构件,供后续部署阶段使用
    - task: DotNetCoreCLI@2
      inputs:
        command: 'publish'
        publishWebProjects: true
        arguments: '--configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)'
        zipAfterPublish: true
    
    # 上传构件到流水线,后续部署阶段可以直接拉取
    - publish: '$(Build.ArtifactStagingDirectory)'
      artifact: webapp
      displayName: 'Upload build artifact'

# 2. 部署到开发环境
- stage: DeployToDev
  dependsOn: Build
  # 只有Build阶段成功才执行
  condition: succeeded()
  jobs:
  - deployment: DeployDev
    # 关联Azure DevOps中提前创建的dev环境
    environment: dev
    strategy:
      runOnce:
        deploy:
          steps:
          # 拉取之前构建的构件
          - download: current
            artifact: webapp
          
          # 示例为部署到Azure Web App,可替换为你自己的部署逻辑
          - task: AzureWebApp@1
            inputs:
              azureSubscription: '你的Azure服务连接名'
              appName: '$(devAppName)'
              package: '$(Pipeline.Workspace)/webapp/*.zip'

# 3. 部署到测试环境
- stage: DeployToTest
  dependsOn: DeployToDev
  condition: succeeded()
  jobs:
  - deployment: DeployTest
    environment: test
    strategy:
      runOnce:
        deploy:
          steps:
          - download: current
            artifact: webapp
          - task: AzureWebApp@1
            inputs:
              azureSubscription: '你的Azure服务连接名'
              appName: '$(testAppName)'
              package: '$(Pipeline.Workspace)/webapp/*.zip'

# 4. 部署到生产环境
- stage: DeployToProd
  dependsOn: DeployToTest
  condition: succeeded()
  jobs:
  - deployment: DeployProd
    # 关联prod环境,只要你在Azure DevOps的prod环境中配置了手动审批,执行到这个阶段前会自动触发审批流程
    environment: prod
    strategy:
      runOnce:
        deploy:
          steps:
          - download: current
            artifact: webapp
          - task: AzureWebApp@1
            inputs:
              azureSubscription: '你的Azure服务连接名'
              appName: '$(prodAppName)'
              package: '$(Pipeline.Workspace)/webapp/*.zip'

使用注意事项

  • 你需要提前在Azure DevOps项目的「环境」板块创建dev、test、prod三个环境,生产环境可以按需配置手动审批人、部署门槛等规则
  • 示例中的构建、部署步骤仅为参考,可以根据你的技术栈替换为Java、Node.js构建,或者Kubernetes、虚拟机、静态站点等部署逻辑
  • 敏感配置比如服务连接凭证、数据库密码等建议存到Azure DevOps变量组或者密钥保管库,不要硬编码到YAML文件中

内容的提问来源于stack exchange,提问作者AzureDevOpsBeginner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 11:48:04