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 ...
随机推荐
- 微信小程序开发初探
一.关于微信小程序 1.1 小程序诞生的背景 张小龙说道: (1)一切以用户价值为依归→用户是微信的核心,所以微信中没有很多与客户无关的功能,比如QQ中的乱七八糟一系列东西. (2)让创造发挥价值→所 ...
- 探索c#之Async、Await剖析
阅读目录: 基本介绍 基本原理剖析 内部实现剖析 重点注意的地方 总结 基本介绍 Async.Await是net4.x新增的异步编程方式,其目的是为了简化异步程序编写,和之前APM方式简单对比如下. ...
- Web API 强势入门指南
Web API是一个比较宽泛的概念.这里我们提到Web API特指ASP.NET Web API. 这篇文章中我们主要介绍Web API的主要功能以及与其他同类型框架的对比,最后通过一些相对复杂的实例 ...
- tomcat RMI 停不掉
项目采用jfinal框架,做了一个RMI的服务,对其它程序提供服务.实现上,写了一个RmiPlugin package com.wisdombud.cloudtalk.plugin; import j ...
- 给WinForm窗体添加快捷键 响应回车键、空格键
1.设置窗体KeyPreview属性为True 2.添加窗体的KeyDown事件 /// <summary> /// 窗体的keydown事件响应 添加快捷键 /// </summa ...
- Java命名规范
驼峰法则: 将所有字母都小写(包括缩写),然后将单词的第一个字母大写. 每个单词的第一个字母都大写,来得到大驼峰式命名. 除了第一个单词,每个单词的第一个字母都大写,来得到(小)驼峰式命名. 为避免歧 ...
- MVC5 网站开发之七 用户功能 3用户资料的修改和删除
这次主要实现管理后台界面用户资料的修改和删除,修改用户资料和角色是经常用到的功能,但删除用户的情况比较少,为了功能的完整性还是坐上了.主要用到两个action "Modify"和& ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(27)-权限管理系统-分配用户给角色
系列目录 分配用户给角色,跟分配角色给用户操作是基本一致的. 打开模块维护,展开SysRole模块添加一个操作码,并赋予权限 设置好之后将权限授权给管理员,在SysRole的index添加操作码与js ...
- 大三作品:不需要售货员的超市? Easy-Shopping超市导购系统
本来么,逛超市是一件很爽的事情,拉上父母孩子,推个大推车,一边聊一边买,然后开开心心的回家去. 可到了旺季,逛超市可就麻烦了,买东西人挤人,到结算的地方人山人海,一刷卡,我去,怎么这个卫生纸这么贵!这 ...
- 扩展方法解决LinqToSql Contains超过2100行报错问题
1.扩展方法 using System; using System.Collections.Generic; using System.Linq; using System.Web; using Sy ...



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