目录


1. 持续集成介绍

1.1 概念

1.2 持续集成的好处

2. GitLab持续集成(CI)

2.1 简介

2.2 GitLab简单原理图

2.3 GitLab持续集成所需环境

2.4 需要了解知识

3. 搭建GitLab持续集成环境(NET版)

3.1 环境搭建

3.1.1 基础环境搭建

3.1.2 Git安装

3.1.3 NuGet安装

3.2 相关配置

3.2.1 Git环境变量配置

3.2.2 PowerShell调用测试

3.2.3 GitLab-Runner下载

3.3 GitLab查看项目的Runners

3.4 构建GitLab-Runner服务

3.4.1 介绍

3.4.2 下载软件(没下载的请下载)

3.4.3 注册信息

3.4.4 开启gitlab-runner服务

3.4.5 修改协议config.toml文件(重要)

3.5 构建.gitlab-ci.yml脚本

3.6 完成配置

4. 常见问题解决

4.1 GitLab出现Pending卡住

4.2 GitLab CI乱码问题

4.3 明明错误,但Build成功

4.4 .gitlab-ci.yml脚本错误


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

下载地址:

https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-ci-multi-runner-windows-amd64.exe

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

下载地址:

https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-ci-multi-runner-windows-amd64.exe

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持续集成配置方案的更多相关文章

  1. GitLab CI持续集成配置方案(补)

    上篇文章介绍了GitLab CI的持续集成配置方法,本篇文章将主要介绍NUnit的持续集成和遇到的一些坑 1.NUnit单元测试持续集成 下载NUnit.3.4.1.msi,https://githu ...

  2. Ubuntu Docker 安装和配置 GitLab CI 持续集成

    相关文章: Ubuntu Docker 简单安装 GitLab 劈荆斩棘:Gitlab 部署 CI 持续集成 目的:在 Ubuntu 服务器上,使用 Docker 安装和配置 GitLab Runne ...

  3. Gitlab CI 持续集成的完整实践

    Gitlab CI 持续集成的完整实践 本着公司团队初创,又在空档期想搞点事情,搭建了私有Gitlab的契机,顺便把持续集成搭建起,实现了对Python服务端代码的单元测试.静态代码分析和接口测试的持 ...

  4. Git Hooks、GitLab CI持续集成以及使用Jenkins实现自动化任务

    Git Hooks.GitLab CI持续集成以及使用Jenkins实现自动化任务 前言 在一个共享项目(或者说多人协同开发的项目)的开发过程中,为有效确保团队成员编码风格的统一,确保部署方式的统一, ...

  5. Gitlab CI持续集成 - GitLab Runner 安装与注册

    GitLab Runner安装 需要添加gitlab官方库: # For Debian/Ubuntu/Mint curl -L https://packages.gitlab.com/install/ ...

  6. [原创]CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接

    近年来,由于开源项目.社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更多的人在说协同开发.敏捷开发.迭代开发.持续集成和单元测试这些拉风的术语.然而,大都是仅仅听到在说而已,国内 ...

  7. CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接

    原文地址https://www.cnblogs.com/kevingrace/p/5651447.html 近年来,由于开源项目.社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更 ...

  8. 【补充】Gitlab 部署 CI 持续集成

    上一篇:<劈荆斩棘:Gitlab 部署 CI 持续集成> 上一篇所配置的.gitlab-ci.yml: stages: - build - test before_script: - ec ...

  9. Jenkins+Gitlab搭建持续集成(CI)环境

    利用Jenkins+Gitlab搭建持续集成(CI)环境 Permalink: 2013-09-08 22:04:00 by hyhx2008in intern tags: jenkins gitla ...

随机推荐

  1. 深入理解jQuery、Angular、node中的Promise

    最初遇到Promise是在jQuery中,在jQuery1.5版本中引入了Deferred Object,这个异步队列模块用于实现异步任务和回调函数的解耦.为ajax模块.队列模块.ready事件提供 ...

  2. 写自己的socket框架(二)

    1.开始正常监听以后,就要开始接受数据了,整体流程图如下: 2.上一节看到我们在程序初始化的时候,初始化了很多个SocketConnection,用于管理客户端的链接,那应用层如何来操作,又什么时候来 ...

  3. 如何在腾讯开放平台的云服务器上安装php和memcache 一

    由于被通知腾讯的CEE要关闭了,必须自己切换到服务器,自己装php.烦到一个B. 首先找到官方wiki: http://wiki.qcloud.com/wiki/SUSE%E7%8E%AF%E5%A2 ...

  4. Entity Framework 6 Recipes 2nd Edition(11-11)译 -> 在LINQ中调用数据库函数

    11-11. 在LINQ中调用数据库函数 问题 相要在一个LINQ 查询中调用数据库函数. 解决方案 假设有一个任命(Appointment )实体模型,如Figure 11-11.所示, 我们想要查 ...

  5. 使用Newtonsoft.Json.dll(JSON.NET)动态解析JSON、.net 的json的序列化与反序列化(一)

    在开发中,我非常喜欢动态语言和匿名对象带来的方便,JSON.NET具有动态序列化和反序列化任意JSON内容的能力,不必将它映射到具体的强类型对象,它可以处理不确定的类型(集合.字典.动态对象和匿名对象 ...

  6. 解析大型.NET ERP系统数据访问 对象关系映射框架LLBL Gen Pro

    LLBL Gen Pro是一个为.NET开发人员设计的的对象关系映射(ORM)框架,与NHibernate,Entity Framework等框架一样,通过实体与数据表的映射,实现关系数据库持久化. ...

  7. Log4Net生成出现未引用错误解决方法

    1.步骤一: 2.步骤二: 明明添加了引用怎么还提示找不到命名空间呢.解决这个问题很简单,右键项目选择属性: 3.步骤三:换成.NET Framework 4即可,解决! 4.两个有啥区别? Micr ...

  8. 返回顶部的功能 div固定在页面位置不变

    1.你在网上搜索的时候,可能会搜索到div固定在页面上,不随滚动条滚动而滚动是用CSS写的,写法是position:fixed;bottom:0; 但是这个在iframe满地跑的页面实际开发中,有啥用 ...

  9. Handler系列之创建子线程Handler

    上一篇我介绍了Handler机制的工作原理,默认情况下,ActivityThread类为我们创建的了主线程的Looper和消息队列,所以当你创建Handler之后发送消息的时候,消息的轮训和handl ...

  10. SharePoint 2013 Create taxonomy field

    创建taxonomy field之前我们首先来学习一下如果创建termSet,原因是我们所创建的taxonomy field需要关联到termSet. 简单介绍一下Taxonomy Term Stor ...