在Gitlab CI / CD管道中设置赛普拉斯测试

时间:2019-12-04 20:51:07

标签: .net-core gitlab cypress

我正在尝试创建一个gitlab CI / CD管道,其中包括对.NETcore项目的自动化赛普拉斯测试。我收集了一些可以在本地成功运行的赛普拉斯测试。它们存储在目录中:

 <project>/Cypress/integration/

我的Gitlab CI / CD管道正在成功部署和构建 我的测试服务器(Windows Server 2012)上的代码。但是,部署后,cypress文件夹不在我的测试服务器上。但是,当我在本地构建项目时,会有一个cypress文件夹。在我的本地构建和gitlab-ci.yaml定义的构建中,构建命令都是相同的:

     dotnet publish -c Release

也就是说,在本地构建期间,我的/bin/Release/netcoreapp2.1.publish/cypress中的内容不包括我在本地创建的测试-只是cypress提供的示例。显然,恢复节点软件包正在创建新的cypress安装。

如何将本地赛普拉斯测试放到测试服务器上?为什么通过Gitlab CI / CD进行的构建与我的本地构建在是否安装赛普拉斯方面有何不同?

我尝试更新.csproj文件,使其在构建中包含cypress目录,如下所示:

  <ItemGroup> 
     <!-- include cypress tests in build for automated testing-->
     <Content Include="cypress\**"> 
     <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> 
  </Content> 
</ItemGroup>

但这给我一个错误:

... error NETSDK1022: Duplicate 'Content' items were included...

关于如何使它工作的任何建议?下面是我的gitlab-ci.yaml文件:

stages:
  - build
  - test
  - deploy
build:
 stage: build
 tags: 
    - cris .netcore
 script: 
  - echo "removing old files"
  - 'Remove-Item -path D:\DeployedWebApps\cris-automated-tst\* -recurse'
  - echo "dotnet build started"
  - 'dotnet publish -c Release -o "D:\DeployedWebApps\cris-automated-tst\"'
test:
 stage: test
 tags: 
    - cris .netcore
 script:
   - echo "testing"
   - 'npx cypress run'
deploy:
 stage: deploy
 tags:
    - cris .netcore
 script:
  - echo "deploying"
 when: on_success
 environment:
  name: Development
  url: https://cris-automated-tst.gisdata.mn.gov
 only:
   - dev

1 个答案:

答案 0 :(得分:0)

好像我自己解决了这个问题。诀窍是只发布Cypress Integration文件夹,而不发布整个Cypress目录:

 <ItemGroup> 
     <!-- include cypress tests in build for automated testing-->
     <Content Include="cypress\integration\**"> 
     <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> 
  </Content> 
</ItemGroup>