Azure devops 如何构造Azure Devops管道以进行测试和维护;发布环境?

Azure devops 如何构造Azure Devops管道以进行测试和维护;发布环境?,azure-devops,azure-pipelines,azure-pipelines-tasks,Azure Devops,Azure Pipelines,Azure Pipelines Tasks,我是Azure DevOps的新手,希望为我的项目创建正确的管道/发布结构。我正在努力了解如何构建代码,并为构建配置传递正确的值 我已经创建了我的回购协议和分支机构: trigger: - main - feature/* - uat 主(已发布/待发布代码的主分支) 功能/添加新客户(每件作品的功能分支) uat(合并多个特性的分支,专门用于发布前的测试) 我创建了一个构建管道,这为我创建了一个“azure pipelines.yaml”文件,我用它来构建和发布构建文件。这是从我的分支触发的

我是Azure DevOps的新手,希望为我的项目创建正确的管道/发布结构。我正在努力了解如何构建代码,并为构建配置传递正确的值

我已经创建了我的回购协议和分支机构:

trigger:
- main
- feature/*
- uat
主(已发布/待发布代码的主分支)

功能/添加新客户(每件作品的功能分支)

uat(合并多个特性的分支,专门用于发布前的测试)

我创建了一个构建管道,这为我创建了一个“azure pipelines.yaml”文件,我用它来构建和发布构建文件。这是从我的分支触发的:

trigger:
- main
- feature/*
- uat
到目前为止一切都很好。但这是通过在yaml中静态/硬编码指定构建配置实现的

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  **buildConfiguration: 'Release'**
现在,我在管道中添加了一个变量BuildConfig,并将其设置为“UAT”,以便在yaml中引用,如下所示:

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  **buildConfiguration: '$(BuildConfig)'**
这让我可以“动态”设置构建配置,但是如果我创建另一个管道,比如说从主分支构建我的发布版本,这会创建一个azure-pipelines-1.yaml,这肯定是错误的,因为我必须复制这些文件才能更改触发分支

是否有一种“适当”的方法可以基于我正在签入的分支为不同的环境创建构建?我见过这些环境,但它们似乎只为我提供虚拟机或Kubernetes?我只是想构建一个.NETFramework遗留web表单应用程序,所以不需要任何花哨的东西


我还没有开始部署过程!!!:D

当然,您可以有一个单独的管道根据发布管道本身中的变量更改其行为。您将希望在运行构建时执行此操作,而不是在根变量级别

有两种方法可以实现这一点:

  • 条件:生成任务中的参数
  • 有选择地设置变量的YAML If语句
这两种方法都适用于您的场景,我相信在您的情况下使用if语句将是最好的。下面是一个简单的例子:

name: Stackoverflow-Example-Variables
trigger:
    - main
    - feature/*
    - uat
stages:
    - stage: your_build_stage
      variables:
        - name: solution
          value: '**/*.sln'
        - name: buildPlatform
          value: 'Any CPU'
        - name: buildConfiguration
          ${{ if eq(variables['Build.SourceBranch'], 'refs/heads/main') }}:
            value: 'Release'
          ${{ if ne(variables['Build.SourceBranch'], 'refs/heads/main') }}:
            value: 'UAT'
      displayName: "Build Solution"
      jobs:
        - job: output_message_job
          displayName: "Output Message Job"
          pool:
            vmImage: "ubuntu-latest"
          steps:
            - powershell: |
                Write-Host ${{ variables.buildConfiguration }}
                Write-Host $(Build.SourceBranch)
                

            

这太好了,谢谢。正是我想要的。如果可以的话,我可以快速跟进一下,您现在是创建3个独立的发布管道,还是创建一个包含dev/qa/release阶段的管道?如果是后者,我将如何确定要为正确的构建/环境检索哪些工件?因此,如果您使用的是YAML,那么您将希望在构建的同一管道中包含发布阶段。我个人建议坚持使用两个管道,每个管道都可以执行构建和发布。一个是构建和部署Dev/QA,由develop或rc/*分支触发。第二个将部署到UAT/生产,触发主/主。在您的环境配置中,还包括对QA/UAT/Prod的批准检查。