GitLab CI持续集成配置方案
目录
1. 持续集成介绍
1.1 概念
持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

1.2 持续集成的好处
(1)快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。
(2)防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。
2. GitLab持续集成(CI)
2.1 简介
在GitLab 8.0+提供了持续集成的功能,在GitLab中有个Runners的概念。
Runner一共有三种类型
1) 本地Runner
2) 普通的服务器上的Runner
3) 基于Docker的Runner
2.2 GitLab简单原理图

本文只介绍GitLab对NET进行持续集成
2.3 GitLab持续集成所需环境
开发环境:VS2015、Git
GitLab服务器环境:GitLab 8.0+
Runner-CI服务器:window、Git、Msbuild、Nuget、PowerShell、GitLab-Runner
2.4 需要了解知识
Git操作、GitLab、Msbuild&Nuget命令行、Powershell命令行
3. 搭建GitLab持续集成环境(NET版)
3.1 环境搭建

3.1.1 基础环境搭建
找一台电脑(服务器最好)系统安装为window 7(x64,改成英文版最好),并且机子安装了.net framework4.0运行环境(里面要有MsBuild)
3.1.2 Git安装
安装Git,下载地址 https://git-scm.com/download/win

3.1.3 NuGet安装
安装NuGet.exe,下载地址:http://nuget.codeplex.com/downloads/get/669083
3.2 相关配置
3.2.1 Git环境变量配置
计算机右键—>属性里单击选择—>环境变量

Git 目录下的 bin(如 C:\Program Files (x86)\Git\bin)添加到 PATH 环境变量。
如下图:选择 PATH编辑,将 bin 的路径(C:\Program Files (x86)\Git\bin)添加到变量值
详细配置参考方法(二选一即可)
【手动配置环境变量】
http://jingyan.baidu.com/article/fec4bce271601ff2618d8be3.html
【Git安装自动配置环境变量】
http://jingyan.baidu.com/article/9f7e7ec0b17cac6f2815548d.html
3.2.2 PowerShell调用测试
PowerShell是调用方式(GitLab提供很多种方式),本文只针对PowerShell方式进行演示。PowerShell可以理解为就是cmd的升级版。
打开PowerShell,测试Git、MsBuild、NuGet命令行能否在PowerShell中使用(如果不想测试,请继续往下看)。

举例:
测试Git

3.2.3 GitLab-Runner下载
首先,下载gitlab-ci-multi-runner-windows-amd64,并将其放到C:\CI
下载地址:
3.3 GitLab查看项目的Runners
点击一个项目->Settings->Runners, 得到Url地址①和registration token②



3.4 构建GitLab-Runner服务
3.4.1 介绍
基础环境已经搭建完成,如何将这台计算机真正变成一台Runner-CI服务器,我们需要详细介绍一下。

3.4.2 下载软件(没下载的请下载)
首先,下载gitlab-ci-multi-runner-windows-amd64,并将其放到 D:\CI_Test
下载地址:
3.4.3 注册信息
运行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
如下图填写信息红色部分
3.4.4 开启gitlab-runner服务
输入开启命令,并检查window服务中和GitLab->Runners中是否开启成功
gitlab-ci-multi-runner-windows-amd64.exe install gitlab-ci-multi-runner-windows-amd64.exe start



3.4.5 修改协议config.toml文件(重要)
注册成功后,在文件夹中找到config.toml,在[[runners]]后面添加shell = "powershell"节点


3.5 构建.gitlab-ci.yml脚本
【.gitlab-ci.yml内容为】
stages: - build job: stage: build script: - echo "Restoring NuGet Packages..." - C:\test\nuget.exe restore "ConsoleApplication1.sln" - echo "Solution Build..." - C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe /p:Configuration=Debug /p:Platform="Any CPU" /consoleloggerparameters:ErrorsOnly /maxcpucount /nologo /property:Configuration=Release /verbosity:quiet "ConsoleApplication1.sln" tags: except: - tags下图红框中的命令,只要将路径修改为"ConsoleApplication1.sln"的实际路径就能直接从Powershell中运行。注意:如果报错"ConsoleApplication1.sln"找不到可以尝试变为"src/ConsoleApplication1.sln"
3.6 完成配置
提交代码测试
成功:
点击查看成功日志
失败:
点击查看错误日志
编译中:
点击查看编译中的日志
.gitlab-ci.yml脚本错误:
,点击跳转到.gitlab-ci.yml验证页面
4. 常见问题解决
4.1 GitLab出现Pending卡住
请检查Runner-CI服务器的GitLab-Runner服务是否安装成功,Runners中的Url地址①是否正确。

4.2 GitLab CI乱码问题
GitLab返回信息乱码,一般是因为GitLab不能识别中文,一般乱码是PowerShell返回的中文,把PowerShell脚本独立运行看看是否报错。所以推荐window搞成英文版的,要是哪位大侠知道GitLab怎么识别中文麻烦分享下哈。
4.3 明明错误,但Build成功
错误截图如下,请检查Git环境变量是否配置,PowerShell脚本是否独立为一个文件

4.4 .gitlab-ci.yml脚本错误
点击Lint,进行脚本验证,参考资料http://docs.gitlab.com/ee/ci/yaml/README.html
注意
script:
- {空格} {你的命令}



感谢
劈荆斩棘:Gitlab 部署 CI 持续集成 感谢这篇文章让我少走了很多弯路
GitLab CI持续集成配置方案的更多相关文章
- GitLab CI持续集成配置方案(补)
上篇文章介绍了GitLab CI的持续集成配置方法,本篇文章将主要介绍NUnit的持续集成和遇到的一些坑 1.NUnit单元测试持续集成 下载NUnit.3.4.1.msi,https://githu ...
- Ubuntu Docker 安装和配置 GitLab CI 持续集成
相关文章: Ubuntu Docker 简单安装 GitLab 劈荆斩棘:Gitlab 部署 CI 持续集成 目的:在 Ubuntu 服务器上,使用 Docker 安装和配置 GitLab Runne ...
- Gitlab CI 持续集成的完整实践
Gitlab CI 持续集成的完整实践 本着公司团队初创,又在空档期想搞点事情,搭建了私有Gitlab的契机,顺便把持续集成搭建起,实现了对Python服务端代码的单元测试.静态代码分析和接口测试的持 ...
- Git Hooks、GitLab CI持续集成以及使用Jenkins实现自动化任务
Git Hooks.GitLab CI持续集成以及使用Jenkins实现自动化任务 前言 在一个共享项目(或者说多人协同开发的项目)的开发过程中,为有效确保团队成员编码风格的统一,确保部署方式的统一, ...
- Gitlab CI持续集成 - GitLab Runner 安装与注册
GitLab Runner安装 需要添加gitlab官方库: # For Debian/Ubuntu/Mint curl -L https://packages.gitlab.com/install/ ...
- [原创]CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接
近年来,由于开源项目.社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更多的人在说协同开发.敏捷开发.迭代开发.持续集成和单元测试这些拉风的术语.然而,大都是仅仅听到在说而已,国内 ...
- CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接
原文地址https://www.cnblogs.com/kevingrace/p/5651447.html 近年来,由于开源项目.社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更 ...
- 【补充】Gitlab 部署 CI 持续集成
上一篇:<劈荆斩棘:Gitlab 部署 CI 持续集成> 上一篇所配置的.gitlab-ci.yml: stages: - build - test before_script: - ec ...
- Jenkins+Gitlab搭建持续集成(CI)环境
利用Jenkins+Gitlab搭建持续集成(CI)环境 Permalink: 2013-09-08 22:04:00 by hyhx2008in intern tags: jenkins gitla ...
随机推荐
- Java线程池解析
Java的一大优势是能完成多线程任务,对线程的封装和调度非常好,那么它又是如何实现的呢? jdk的包下和线程相关类的类图. 从上面可以看出Java的线程池主的实现类主要有两个类ThreadPoolEx ...
- 牛顿插值法——用Python进行数值计算
拉格朗日插值法的最大毛病就是每次引入一个新的插值节点,基函数都要发生变化,这在一些实际生产环境中是不合适的,有时候会不断的有新的测量数据加入插值节点集, 因此,通过寻找n个插值节点构造的的插值函数与n ...
- [Java面经] 关于面试的二三事.
今天终于闲下来了, 那么也好总结下这几天面试的经历.四天的时间一共面了七家, 有一家是自己推迟了没有去.声明:如若转载请注明出处:http://www.cnblogs.com/wang-meng/p/ ...
- $.extend({},defaults, options) --(初体验三)
1.$.extend({},defaults, options) 这样做的目的是为了保护包默认参数.也就是defaults里面的参数. 做法是将一个新的空对象({})做为$.extend的第一个参数, ...
- jvm系列(一):java类的加载机制
java类的加载机制 1.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装 ...
- 【NLP】条件随机场知识扩展延伸(五)
条件随机场知识扩展延伸 作者:白宁超 2016年8月3日19:47:55 [摘要]:条件随机场用于序列标注,数据分割等自然语言处理中,表现出很好的效果.在中文分词.中文人名识别和歧义消解等任务中都有应 ...
- APP测试入门篇之APP基础知识(001)
前言 最近两月比较多的事情混杂在一起,静不下心来写点东西,月初想发表一遍接口测试的总结,或者APP测试相关的内容,一晃就月底了,总结提炼一时半会也整不完.放几个早年总结内部培训PPT出来 ...
- ASP.NET Core 中文文档 第二章 指南(4.1)ASP.NET Core MVC 与 Visual Studio 入门
原文:Getting started with ASP.NET Core MVC and Visual Studio 作者:Rick Anderson 翻译:娄宇(Lyrics) 校对:刘怡(Alex ...
- ASP.NET Core 中文文档 第三章 原理(11)在多个环境中工作
原文: Working with Multiple Environments 作者: Steve Smith 翻译: 刘浩杨 校对: 孟帅洋(书缘) ASP.NET Core 介绍了支持在多个环境中管 ...
- react初始(1)
前言:react框架的出现是因为Facebook在建设Instagram交流平台的时候要处理大量的数据流,但是行业流行的MVC框架并不能适合Facebook公司的要求,他们就组织了自己的人力来开发re ...



点击查看成功日志
点击查看错误日志
点击查看编译中的日志
,点击跳转到.gitlab-ci.yml验证页面