简介
Gitlab Runner在Windows上运行之后,我们在.gitlab-ci.yml中编写script语句,思路和Linux是一样。但是考虑到Windows的特点,为了让程序员少接触一些知识点,以及给未来执行作业的时候预留更多的操作空间。简单说就是未来修改执行作业时候的逻辑,但是每个软件仓库根目录下的.gitlab-ci.yml不需要改动,我们一共编写了6个PowerShell脚本,和1个适配Directory.Build.props技术的windows批处理文件。
执行单元测试
function test-dll {
param (
[string]$VSTEST_CONSOLE_EXE_DIR,
[string]$ci_project_dir,
[string]$dll_path,
[string]$result_path
)
$dll_file = $ci_project_dir + "\\" + $dll_path
if(( $project_path -like "/*") -or ($project_path -like "\\*")){
$dll_file = $ci_project_dir + $dll_path
}
echo "要测试的库"$dll_file
echo "MSTest所在的路径"$VSTEST_CONSOLE_EXE_DIR
echo "测试报告输出路径"$result_path
$exePath = $VSTEST_CONSOLE_EXE_DIR + "\\vstest.console.exe"
if(Test-Path -Path $exePath){
}
else
{
throw "vstest.console.exe directory not found:" + $VSTEST_CONSOLE_EXE_DIR
}
cd $VSTEST_CONSOLE_EXE_DIR
$test_result_path = $ci_project_dir + "\TestResults"
echo $test_result_path
.\vstest.console.exe $dll_file /blame /logger:trx /ResultsDirectory:$test_result_path
$testresult_exe_dir="X:\gitlab-runner\tools\test-result-command-lines\Loda.Test.CommandLines\bin\Release\net8.0"
$exePath = $testresult_exe_dir + "\\testresult.exe"
if(Test-Path -Path $exePath){
}
else
{
throw "testresult.exe directory not found:" + $testresult_exe_dir
}
cd $testresult_exe_dir
.\testresult.exe read --file $test_result_path
exit $LASTEXITCODE
}
黑夜里不停折腾的代码行者。