Jenkins+MSbuild的持续集成(自动化发布)(转自测试同事之手,重点在文字)

原文地址: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,解决问题

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jenkins和Docker可以结合使用进行持续集成。在Jenkins机器上,由于Docker是使用root用户运行的,而Jenkins是使用普通用户jenkins运行的,所以我们需要配置jenkins用户可以使用docker命令。可以通过修改sudoers文件来实现,具体的配置如下所示: [root@osb30 ~]# visudo jenkins ALL=(root) NOPASSWD: /usr/bin/docker 这样配置之后,jenkins用户就可以在执行构建过程中使用docker命令了。 在进行Jenkins和Docker的持续集成之前,我们首先需要安装和部署Jenkins,具体的步骤如下所示: 1. 安装Jenkins,并确保Jenkins服务已经成功启动。 2. 配置Jenkins的相关设置,比如Jenkins的端口、访问权限等。 3. 创建一个Maven风格的job,用于构建我们的项目。可以设置项目的代码仓库、构建过程、构建触发器等。 4. 配置Jenkins的邮件通知设置,方便在构建过程中及时收到构建结果的通知。 5. 可选的,可以将Sonar与Jenkins集成,用于代码质量检查和分析。 接下来,我们需要进行Jenkins和Docker的集成配置,以实现持续集成。具体的步骤如下所示: 1. 在Jenkins机器上新建一个名为jenkins的用户,可以使用以下命令进行创建: [root@osb30 ~]# groupadd jenkins [root@osb30 ~]# useradd -g jenkins jenkins [root@osb30 ~]# id jenkins uid=501(jenkins) gid=501(jenkins) groups=501(jenkins) [root@osb30 ~]# echo "wisedu" | passwd --stdin jenkins &> /dev/null 2. 配置jenkins用户可以使用docker命令,通过修改sudoers文件进行配置。 现在,你已经完成了Jenkins和Docker的持续集成的配置。你可以在Jenkins上创建和配置你的项目,使用Docker进行构建和部署。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Jenkins+Docker持续集成](https://blog.csdn.net/weixin_30892987/article/details/98066958)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值