在 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 推荐的:
我有一个 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 推荐的: