GitLab CI持续集成配置方案
目录
持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
(1)快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。
(2)防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。
在GitLab 8.0+提供了持续集成的功能,在GitLab中有个Runners的概念。
Runner一共有三种类型
1) 本地Runner
2) 普通的服务器上的Runner
3) 基于Docker的Runner
本文只介绍GitLab对NET进行持续集成
开发环境:VS2015、Git
GitLab服务器环境:GitLab 8.0+
Runner-CI服务器:window、Git、Msbuild、Nuget、PowerShell、GitLab-Runner
Git操作、GitLab、Msbuild&Nuget命令行、Powershell命令行
找一台电脑(服务器最好)系统安装为window 7(x64,改成英文版最好),并且机子安装了.net framework4.0运行环境(里面要有MsBuild)
安装Git,下载地址 https://git-scm.com/download/win
安装NuGet.exe,下载地址:http://nuget.codeplex.com/downloads/get/669083
计算机右键—>属性里单击选择—>环境变量
Git 目录下的 bin(如 C:Program Files (x86)Gitin)添加到 PATH 环境变量。
如下图:选择 PATH编辑,将 bin 的路径(C:Program Files (x86)Gitin)添加到变量值
详细配置参考方法(二选一即可)
【手动配置环境变量】
http://jingyan.baidu.com/article/fec4bce271601ff2618d8be3.html
【Git安装自动配置环境变量】
http://jingyan.baidu.com/article/9f7e7ec0b17cac6f2815548d.html
PowerShell是调用方式(GitLab提供很多种方式),本文只针对PowerShell方式进行演示。PowerShell可以理解为就是cmd的升级版。
打开PowerShell,测试Git、MsBuild、NuGet命令行能否在PowerShell中使用(如果不想测试,请继续往下看)。
举例:
测试Git
首先,下载gitlab-ci-multi-runner-windows-amd64,并将其放到C:CI
下载地址:
点击一个项目->Settings->Runners, 得到Url地址①和registration token②
基础环境已经搭建完成,如何将这台计算机真正变成一台Runner-CI服务器,我们需要详细介绍一下。
首先,下载gitlab-ci-multi-runner-windows-amd64,并将其放到 D:CI_Test
下载地址:
运行cmd命令(以管理员身份打开cmd)
输入命令为:
cd cd ci gitlab-ci-multi-runner-windows-amd64.exe register
根据提示,填写
1) GitLab->Runners的Url地址①
2) GitLab->Runners的registration token②
3) runner名称,这个随便写
4) 分支名,master
5) 协议方式,shell
如下图填写信息红色部分
输入开启命令,并检查window服务中和GitLab->Runners中是否开启成功
gitlab-ci-multi-runner-windows-amd64.exe install gitlab-ci-multi-runner-windows-amd64.exe start
注册成功后,在文件夹中找到config.toml,在[[runners]]后面添加shell = "powershell"节点
【.gitlab-ci.yml内容为】
下图红框中的命令,只要将路径修改为"ConsoleApplication1.sln"的实际路径就能直接从Powershell中运行。注意:如果报错"ConsoleApplication1.sln"找不到可以尝试变为"src/ConsoleApplication1.sln"stages: - build job: stage: build script: - echo "Restoring NuGet Packages..." - C: est uget.exe restore "ConsoleApplication1.sln" - echo "Solution Build..." - C:WindowsMicrosoft.NETFramework64v4.0.30319msbuild.exe /p:Configuration=Debug /p:Platform="Any CPU" /consoleloggerparameters:ErrorsOnly /maxcpucount /nologo /property:Configuration=Release /verbosity:quiet "ConsoleApplication1.sln" tags: except: - tags
提交代码测试
请检查Runner-CI服务器的GitLab-Runner服务是否安装成功,Runners中的Url地址①是否正确。
GitLab返回信息乱码,一般是因为GitLab不能识别中文,一般乱码是PowerShell返回的中文,把PowerShell脚本独立运行看看是否报错。所以推荐window搞成英文版的,要是哪位大侠知道GitLab怎么识别中文麻烦分享下哈。
错误截图如下,请检查Git环境变量是否配置,PowerShell脚本是否独立为一个文件
点击Lint,进行脚本验证,参考资料http://docs.gitlab.com/ee/ci/yaml/README.html
注意
script: - {空格} {你的命令}
感谢