Jenkins+MSbuild的持续集成(自动化发布)(转自测试同事之手,重点在文字)
原文地址:https://www.yuque.com/wujisheng/gx7677/eb4l5q 什么是Jenkins?Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。什么是MSbuild?MSBuild 是 Microsoft 和 Visual Studio的生成系统...
原文地址:https://www.yuque.com/wujisheng/gx7677/eb4l5q
什么是Jenkins?
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
什么是MSbuild?
MSBuild 是 Microsoft 和 Visual Studio的生成系统。它不仅仅是一个构造工具,应该称之为拥有相当强大扩展能力的自动化平台。MSBuild平台的主要涉及到三部分:执行引擎、构造工程、任务。其中最核心的就是执行引擎,它包括定义构造工程的规范,解释构造工程,执行“构造动作”;构造工程是用来描述构造任务的,大多数情况下我们使用MSBuild就是遵循规范,编写一个构造工程;MSBuild引擎执行的每一个“构造动作”就是通过任务实现的,任务就是MSBuild的扩展机制,通过编写新的任务就能够不断扩充MSBuild的执行能力。所以这三部分分别代表了引擎、脚本和扩展能力。
PS. Visual Studio最终还是需要通过MSbuild去编译项目发布,只是IDE背后去完成了这些工作而已,而通过Jenkins我们需要去使用命令去调用MSbuild编译发布。
一、Jenkins的安装
Jenkins有windows版本也有linux版本,由于我们项目都是基于.net freamwork进行开发,而jenkins构建需要编译.net程序,为了更方便的编译,因此选择安装windows版本。
1、下载
打开官网:https://jenkins.io/download/
去到DownLoad页面即可,选择windows下载。当然也可以选择 java 的war包去部署。安装tomcat服务器,将war包放进去。
2、安装
下载完成后,可按照提示进行安装即可。(windows下傻瓜式安装,注意Jenkins是java开发,因此需先安装对应jdk版本,目前下载最新的JDK,然后配置JDK环境变量即可)
3、配置
安装完成后会自动安装并启动一个windows服务,名为Jenkins,打开浏览器localhost:8080(Jenkins默认端口号为8080,如需修改可打开Jenkins安装目录找到Jenkins.xml修改其中端口,然后打开服务重启Jenkins服务即可)之后按照提示进行配置即可!配置完成后看到如下界面代表安装成功!
windows安装包,整个安装过程非常简单,基本上是傻瓜式按照提示操作即可,期间并未遇到问题,基本上10分钟左右就搞定了!接下来介绍.NET下Jenkins的持续集成与自动化部署!
二、通过SVN获取源码
1、安装插件
首先要做的就是获取到我们的源代码。由于我们公司使用的源代码管理工具主要是SVN因此在这里主要介绍SVN的方式方法。根据度娘的指引,我们需要安装一个SVN的插件:Subversion Plug-in(如果:安装Jenkins时选择的安装推荐的插件,则Jenkins会直接给安装上这个插件,无需自己安装)。
在系统管理--插件管理--已安装中我们可以找到这个插件
2、SVN凭证的全局配置
SVN拉取都是需要账号的,所以我们先去首页的凭据里去添加SVN的全局账号,按照说明输入 保存即可。
三、构建项目
选择新建一个自由风格的软件项目,起个名字,进入到项目配置后,找到源代码管理选项:
主要有以下几个选项需要配置:
-
Repository URL:要获取的SVN的路径,如:https://127.0.0.1:9666/svn/HS.Mall/SoureCode/Trunk/Test
-
Credentials:配置SVN用户名和密码
-
Ignore externals:是否忽略SVN外部引用
-
Additional Credentials:当你的SVN版本库使用外部引用关联其它版本库是这个就很重要了
Realm:填写SVN服务器的地址 <https://127.0.0.1:9666> VisualSVN Server //(注意这个格式)
Credentials: 填写SVN用户名和密码信息
其它一些选项直接按照默认值就可以,关于每一项的详细介绍可以点击后面的小?号查看。
配置完成后点击保存后,构建该项目查看结果。若能够将源代码更新至Jenkins的工作空间内,则代表配置成功!
Jenkins的工作空间目录是安装目录下的 workspace 目录,每新建一个工程,就会产生一个同命名的文件夹。
PS、这里 .net 项目 我们全部是放在一个解决方案下,所以即使我们是发布解决方案中的一个项目,都需要把整个解决方案的源码拉取下来。至于只拉取一个项目的方案,可以自己去深入研究一下。
四、通过MSBuild编译应用程序
1、安装插件与环境
编译.NET应用程序可通过微软提供的MSBuild工具,先安装插件:MSBuild。(注意:Jenkins服务器需安装MSBuild,建议在Jenkins上安装VS开发工具,可以在构建出问题的时候打开VS调试,省去很多不必要的麻烦,同样是在插件管理中安装)。
2、全局配置
插件安装完毕后,进入系统管理->全局工具配置(ConfigureTools)找到MSBuild配置选项:
如图我们配置了两个MSbuild,供全局使用,一般使用X86即可。
name:自定义名称
Path to MSBuild:MSBuild.exe程序的物理路径
此处MSBuild.exe必须与程序所使用freamwork版本相对应,此处我在这就遇到了一个大坑,一开始随便找个一个MSBuild工具,没想到根本编译不了。建议直接指向visual studio安装目录内的MSBuild.exe,可以避免很多问题。如VS2017在:Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin路径内。
3、配置项目
首先我们需要使用 nuget.exe 包管理工具,执行这样一条命令。用来进行 NuGet 包还原
nuget.exe 可自行下载,放在任意的目录
D:\Tools\CI\nuget.exe restore .\SnService.sln
打开我们之前创建的项目,找到构建选项->增加构建步骤->Build a Visual Studio project or solution using MSBuild
-
MSBuild Version:这里是MSBuild的版本,前面我们已经全局配置好了,选择即可
-
MSBild Build File: ./ShiNiu.PolicyApi/ShiNiu.PolicyApi.csproj --目标项目或解决方案文件的路径+文件名
-
Command Line Arguments:MSBuild 参数
/t:Rebuild --重新生成
/P:Configuration=Release --Release 生成模式(也可Debug)
/p:VisualStudioVersion=14.0 --指定子工具集版本,VS2015对应的是14.0
/p:TargetFrameworkVersion=v4.5.2 --Framework的版本
/p:DeployOnBuild=True --表示部署加编译
PublishProfile=policyapi.test.com.pubxml --使用 xxxx.pubxml 发布文件来发布项目
/p:WebProjectOutputDir=F:\Mytest\API\policyapi.test.com --发布的目标目录
/p:OutputPath=F:\Mytest\API\policyapi.test.com\bin --发布的目标目录的bin目录
如果后面还要执行某些操作可继续增加构建,由于发布时,很多文件无法发布至目标目录,这是可以通过更改配置文件去达到目的,但是由于不是开发人员,所以尽可能不去更改项目的配置,这边后续又增加了python脚本去复制文件至目标目录的构建。总之不管是更改配置也好,命令也好,脚本也好,最终的目的是将编译好的文件发布至目标点。
如上,我不管他有没有这几个文件夹,有就覆盖一次,没有就创建覆盖一次。
至此,保存后,项目就构建完成。
什么?每次都要点一次发布?不不不,持续集成怎么能这么傻呢。
五、Jenkins构建触发器
可以在工程中找到构建触发器。
构建触发器以: * * * * * (五颗星表示)
-
第一个*表示分钟,取值0~59
-
第二个*表示小时,取值0~23
-
第三个*表示一个月的第几天,取值1~31
-
第四个*表示第几月,取值1~12
-
第五个*表示一周中的第几天,取值0~7,其中0和7代表的都是周日
下面列举一些常见的参数:
每隔5分钟构建一次
H/5 * * * *
每两小时构建一次
H H/2 * * *
每天中午下班前定时构建一次
0 12 * * *
每天下午下班前定时构建一次
0 18 * * *
表示每周7天从9:10点到20:10每隔一小时构建一次
10 9-20 * * 1-7
以上就是定时构建触发器,到了设置的时间,自动拉取代码,编译,发布。
另外可以看到还有一个轮询SCM,此种触发器,是设置时间去轮询仓库,如果有代码变更,立即执行构建。这里就不展开讲了,暂时用不到那么频繁的构建。(定时构建和轮询SCM使用互不冲突,具体如何组合,需要根据项目情况合理配置)
如上,就是基于Jenkins从部署到简单使用的介绍。
发布至服务器的方法,类同,不管是通过复制、FTP、还是其他方式,都是将编译好的程序,发布出去。FTP应做一些配置,这里不做讨论,用到的时候再研究。
问题:
1、比如拉取SVN源码到工作空间少了文件,会构建失败,所以会将文件复制过去,这样就可以构建成功。
2、Jenkins端口修改:
修改XML 中的端口号
重启Jenkins服务
修改对应的系统设置,不然报反向代理错误
3、关于SVN拉取报错,在服务中,使用账户系统,admin账号,然后重启Jenkins,解决问题
更多推荐
所有评论(0)