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
相关产品推荐
相关产品推荐

