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

如何配置VSTS流水线:仅部署Web项目并执行Selenium测试?

如何配置构建流水线:生成两类产物但仅部署Web项目

我来给你拆解下具体怎么操作,刚好我之前在配置类似流水线的时候踩过坑,核心思路就是让构建阶段同时生成Web和测试项目的二进制文件,但是只把Web项目的输出打包成发布工件,这样发布流水线就只需要处理Web工件,完全碰不到测试项目的产物。

1. 构建流水线的核心配置步骤

第一步:完整构建解决方案(包含Web和测试项目)

用VS Build任务(或者对应语言的构建任务),确保构建范围包含整个解决方案,比如指定解决方案路径为**/*.sln。这一步必须同时构建Web和测试项目,因为只有生成了测试项目的二进制文件,后续才能运行Selenium测试。

如果用YAML配置,示例代码如下:

- task: VSBuild@1
  inputs:
    solution: '**/*.sln'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'
    # 这些参数确保Web项目生成可部署的输出,但不自动发布
    msbuildArgs: '/p:DeployOnBuild=false /p:WebPublishMethod=Package /p:PackageAsSingleFile=true'

第二步:运行Selenium测试

添加VSTest任务(或对应测试运行任务),指定测试项目的dll路径,比如**/*Test*.dll(根据你的测试项目命名规则调整),这样就能运行类库中的集成测试了。注意:这一步只需要执行测试,不需要把测试产物打包。

YAML示例:

- task: VSTest@2
  inputs:
    testSelector: 'testAssemblies'
    testAssemblyVer2: |
      **/*Test*.dll
      !**/obj/**  # 排除obj文件夹里的临时文件
    searchFolder: '$(System.DefaultWorkingDirectory)'

第三步:仅打包Web项目的输出为发布工件

这是最关键的一步,我们要把Web项目的构建输出单独拎出来,打包成工件,而测试项目的产物留在构建代理的工作目录里(不会被发布)。

可以分两步操作:

  • 用「Archive Files」任务把Web项目的发布文件夹打包成zip文件,源文件夹设为Web项目的输出路径(比如$(System.DefaultWorkingDirectory)/YourWebApp/bin/$(buildConfiguration)/net6.0/publish,根据你的.NET版本和项目结构调整)。
  • 用「Publish Build Artifacts」任务把这个zip文件发布为工件,命名比如WebApp。

YAML示例:

- task: ArchiveFiles@2
  inputs:
    rootFolderOrFile: '$(System.DefaultWorkingDirectory)/YourWebApp/bin/$(buildConfiguration)/net6.0/publish'
    includeRootFolder: false
    archiveType: 'zip'
    archiveFile: '$(Build.ArtifactStagingDirectory)/WebApp.zip'
    replaceExistingArchive: true

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'WebApp'
    publishLocation: 'Container'

2. 发布流水线的配置

发布流水线只需要做一件事:拉取构建流水线生成的WebApp工件,然后用对应的部署任务(比如Azure Web App任务)把这个zip包部署到托管环境即可。因为测试项目的产物根本没被包含在工件里,所以完全不会被部署到托管环境。

额外注意点

  • 如果你的Web项目是用其他技术栈(比如Node.js),只需要把构建和打包步骤换成对应技术栈的任务就行,核心逻辑不变:完整构建所有项目→运行测试→仅打包Web项目输出为工件。
  • 测试项目的构建产物会留在构建代理的工作目录,但构建代理会自动清理这些临时文件,不需要手动处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:28:52