.NETCore下CI/CD之自动化测试
目录
下载完成,直接将该 jenkins.war 包上传到 Tomcat 服务器目录 /usr/local/tomcat/webapps/ 下,这个时候你应该喝杯咖啡;稍等一会,Tomcat 马上就把 jenkins 做好了,大概在1分钟后,访问 jenkins 站点的地址
http://172.16.1.202:8080/jenkins
在 CentOS上,正常情况下,你是无法访问该地址的,需要打开 Tomcat 这只猫猫的侦听端口:8080,执行下面的命令,完成防火墙的设置
firewall-cmd --zone=public --add-port=8080/tcp --permanent firewall-cmd reload
再次访问 jenkins 的地址,你应该看到下面这个界面:
首次访问,按照提示,直接复制密码 cat /opt/.jenkins/secrets/initialAdminPassword 到输入框中进入 jenkins,稍后还需要创建用户,一并设置完成即可
等待 jenkins 初始化完成,可选择安装推荐的插件
请耐心等待插件安装完成....
设置账号密码
Jenkins已就绪
安装 .NET Core 环境
相信来到这个环节,大家都松了一口气,毕竟安装 sdk/runtime 这种事情,微软已经帮我们把脚本写好了,直接 copy 使用即可。访问 upload/201910301104377836.png" style="margin: 0px; padding: 0px; border: 5px solid rgb(204, 204, 204); border-radius: 5px 0px; box-shadow: darkgrey 10px 10px 30px 5px; max-width: 900px; height: auto; width: auto; max-height: 400px;" alt="" />
一个相对标准的解决方案结构如下,解决方案中必须包含 src/test 两个基础项目,表示该项目有单元测试,没有单元测试的项目是不完整的,这应当成为一种良好的编程规范。项目建立完成,我们本地执行单元测试看看结果。
dotnet test
其中,Ron.XUnitTest 项目使用了托管测试主机的方式运行单元测试,默认的测试结果文件是 .trx 格式,在 jenkins 上执行发送测试报告的时候, jenkins 将无法解析,为了使用测试结果文件,我们还必须引用另外一个 nuget 包:XunitXml.TestLogger,该组件赋予我们将 dotnet test 的结果文件转换为 xUnitXml 文件的能力。
控制台输出结果如下:
一共有12项测试,其中全部通过。本地测试已经通过。接下来我们就开始使用 jenkins 构建 .NET Core 程序。
jenkins配置邮件通知
为了实现发送测试报告的功能,我们需要在 jenkins 中配置邮件服务器,点击 Manage Jenkins -> Configure System -> Email notification
配置系统管理员邮件地址
配置 Smtp 服务器
创建第一个 CI/CD 项目
创建任务
点击 “开始创建一个新任务”,输入任务名称,选择自由风格的项目,点击确定,然后马上就进入了任务详细配置的界面。
源码管理,选择 git
由于我的测试项目托管在 GitHub 上,所以我填入 GitHub 的项目地址:https://github.com/lianggx/RonTest.git,身份验证,我选择添加一个认证信息。
编写构建脚本
接下来,直接拉到底部,在构建选项这里选择“增加构建步骤”,选择 “执行 shell”。输入构建脚本。
echo '==============准备开始构建==================' pwd cd src/Ron.Blogs sudo dotnet restore sudo dotnet build sudo dotnet publish --framework netcoreapp2.2 -o /data/sites/RonTest echo '==============构建完成=================='
编写测试脚本
再次增加一个构建步骤,“执行 shell”。输入脚本
sudo dotnet test test/Ron.XUnitTest/Ron.XUnitTest.csproj --logger:"xunit;LogFileName=TestResult.xml"
这里有一个细节,就是在执行命令的时候带了一个参数 --logger:"xunit;LogFileName=TestResult.xml",表示输出测试结果为 xunit 格式的 xml 文件,该文件将在下面的测试报告环节使用。