我正在尝试创建一个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
答案 0 :(得分:0)
好像我自己解决了这个问题。诀窍是只发布Cypress Integration文件夹,而不发布整个Cypress目录:
<ItemGroup>
<!-- include cypress tests in build for automated testing-->
<Content Include="cypress\integration\**">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>