【补充】Gitlab 部署 CI 持续集成
2023-02-18 15:32:38 时间
上一篇:《劈荆斩棘:Gitlab 部署 CI 持续集成》
上一篇所配置的.gitlab-ci.yml
:
stages:
- build
- test
before_script:
- echo "Restoring NuGet Packages..."
- C:\NuGet\nuget.exe restore "src\CNBlogsCI-Sample.sln"
only:
- master
build_job:
stage: build
script:
- echo "Release build..."
- C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe /consoleloggerparameters:ErrorsOnly /maxcpucount /nologo /property:Configuration=Release /verbosity:quiet "src\CNBlogsCI-Sample.sln"
except:
- tags
only:
- master
test_job:
stage: test
script:
- echo "Tests run..."
- C:\xunit.runner.console\tools\xunit.console.exe "src\ClassLibrary2\bin\debug\ClassLibrary2.dll"
- C:\xunit.runner.console\tools\xunit.console.exe "src\ClassLibrary3\bin\debug\ClassLibrary3.dll"
only:
- master
有几个问题:
before_script
要执行两次。C:\NuGet\nuget.exe
写死路径的写法不可取。test_job
需要上传debug
中的dll
文件。
对于上面的问题,完善如下:
stages:
- build
build_job:
stage: build
script:
- echo "Restoring NuGet Packages..."
- nuget restore "src\CNBlogsCI-Sample.sln"
- echo "Release build..."
- msbuild /consoleloggerparameters:ErrorsOnly /maxcpucount /nologo /property:Configuration=Release /verbosity:quiet "src\CNBlogsCI-Sample.sln"
- echo "Tests run..."
- xunit.console "src\ClassLibrary2\bin\debug\ClassLibrary2.dll"
- xunit.console "src\ClassLibrary3\bin\debug\ClassLibrary3.dll"
except:
- tags
only:
- master
nuget
,msbuild
和xunit.console
命令都需要添加环境变量,为什么要去除before_script
和test_job
?因为每执行一个job
,git
都需要Fetching changes...
,所以会清除不受git
版本控制的文件。
还有就是,对于上面的第三个问题,因为msbuild
是Release
模式生成,而我们test
的debug dll
,所以就必须上传文件,我们把test
中的debug
改为Release
就可以了。
我们可以把nuget
,msbuild
和xunit.console
独立出批命令实现。
restore.cmd
:
echo "NuGet Sources List..."
nuget Sources List
echo "Restoring NuGet Packages..."
nuget restore "src\CNBlogsCI-Sample.sln"
build.cmd
:
echo "Release build..."
msbuild /consoleloggerparameters:ErrorsOnly /maxcpucount /nologo /property:Configuration=Release /verbosity:quiet "src\CNBlogsCI-Sample.sln"
test.cmd
:
echo "Tests run..."
xunit.console "src\ClassLibrary2\bin\Release\ClassLibrary2.dll"
xunit.console "src\ClassLibrary3\bin\Release\ClassLibrary3.dll"
.gitlab-ci.yml
:
stages:
- build
build_job:
stage: build
script:
- ./restore.cmd
- ./build.cmd
- ./test.cmd
except:
- tags
script
中的cmd
命令之前需要添加./
。
相关文章
- Linux系列(41) - 监听命令Vmstart,Top(还需完善)
- Linux系列(40) - 自动同步时间chrony
- Linux系列(39) - nohup
- Jmeter系列(10)- Linux环境安装之Jmeter下载配置
- Jmeter系列(9)- Linux环境安装之安装JDK
- Linux系列(38) - 源码包安装(2)
- Linux系列(37) - 源码包与RPM包区别(1)
- Linux系列(36) - yum命令安装(3)
- Linux系列(35) - 光盘yum源搭建(2)
- Linux系列(34) - yum源文件(1)
- Linux系列(33)- rpm命令管理之RPM包校验提取(5)
- Linux系列(32) - rpm命令管理之RPM查询(4)
- 创建Linux虚拟机(CentOS 7)
- vSphere 6.5虚拟机模板的创建和使用(windows与linux)
- 无人值守批量部署Linux操作系统
- 使用Kali Linux虚拟机破解WiFi密码的一波三折及详细操作步骤
- linux 下统计一个文件夹下文件的个数
- C++ 基础篇之如何进行数据封装
- 论c++中的文件操作(竞赛必看)通俗易懂
- C++中小数点后几位的表达