在 Azure DevOps 管道中签出存储库时,赛普拉斯找不到服务器

Cypress can't find server when checking out repo in Azure DevOps pipeline

我有一个 Azure DevOps 项目,其中有 2 个存储库,一个带有 .net Web 应用程序,另一个带有 Cypress 测试。我需要创建一个管道来构建和 运行s 来自网络应用程序存储库的单元测试,然后检查 Cypress 存储库和 运行s e2e 测试。当我的管道尝试 运行 Cypress 测试时,我收到错误消息“Cypress 无法验证此服务器是否 运行ning:https://localhost:5001/”

我相信因为我的 cypress 测试在不同的存储库中,所以我需要将我的网络应用程序 运行 保留在服务器上,直到我的 cypress 测试完成。这个对吗?我不确定,所以这是一个猜测。我该如何设置才能使我的测试 运行 正确?

这是我的管道 yaml 文件:

trigger:
- development

resources:
 repositories:
   - repository: e2ecypress
     type: git
     name: devopsapp/e2ecypress

jobs:
  - job: build_unit_tests
    displayName: '.Net Build'

    pool:
      vmImage: 'windows-latest'

    variables:
      solution: '**/*.sln'
      buildPlatform: 'Any CPU'
      buildConfiguration: 'Release'

    steps:
    - task: NuGetToolInstaller@1

    - task: NuGetCommand@2
      inputs:
        restoreSolution: '$(solution)'

    - task: VSBuild@1
      inputs:
        solution: '$(solution)'
        msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"'
        platform: '$(buildPlatform)'
        configuration: '$(buildConfiguration)'

    - task: VSTest@2
      inputs:
        platform: '$(buildPlatform)'
        configuration: '$(buildConfiguration)'

  - job: cypress_tests
    displayName: 'Cypress Tests'
    pool:
      vmImage: 'windows-latest'
    
    steps:
    - checkout: e2ecypress

    - task: NodeTool@0
      inputs:
        versionSpec: '14.x'
      displayName: 'Install Node.js'
    
    - task: Npm@1
      inputs:
        command: 'install'
      displayName: 'NPM Install'
    
    - script: | 
        npx cypress run
      displayName: 'Cypress Tests'

这是我的管道 运行 的错误:

一个可能的解决方案是在同一个作业中检查两个存储库,例如:

steps:
  - checkout: self
  - checkout: e2ecypress

关键字 self 指的是您从中执行管道的存储库,因此您的网络应用程序。但请注意,当签出多个存储库时,它们的目录路径会发生一些变化,请参阅文档:Check out multiple repositories in your pipeline

然后您可以使用正确的路径在 VM 中的同一作业中访问两个存储库中的内容。这允许您构建您的网络应用程序,启动它,然后 运行 在 运行ning 应用程序上进行 Cypress 测试。

要启动您的应用程序,运行 测试,并在完成后自动退出 Web 应用程序,您可以使用以下答案中描述的解决方案,这也是 Cypress 推荐的: