Jenkins搭建.NET自动编译发布本地环境

最近在作一个团队项目的时候,用到了自动编译发布部署环境【也能够说是持续集成】,因而顺便学习了下这个环境的搭建过程。html

持续集成

  持续集成是一种软件开发实践,即团队开发成员常常集成它们的工做,一般每一个成员天天至少集成一次,也就意味着天天可能会发生屡次集成。每次集成都经过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。git

一、持续集成系统的组成shell

  一个完整的构建系统必须包括:npm

1) 一个自动构建过程,包括自动编译、分发、部署和测试等。windows

2) 一个代码存储库,即须要版本控制软件来保障代码的可维护性,同时做为构建过程的素材库。服务器

3) 一个持续集成服务器。并发

其中1)自动构建和2)代码存储库,都是有相应的软件配合,开发人员须要的学习成本不高,复杂在各模块的相互配合,这一期间可能须要大量时间去调试。一旦调试完毕,对于以后工做效率的提高是成倍的。mvc

二、MSBuild分布式

  自动构建,作.Net开发的同仁相信大多数都会使用VS,而Visual Studio用MSBuild构建.NET项目。svn

MSBuild所需的仅仅是一个脚本,在脚本中指定要执行的target;项目中的.csproj和.vbproj 文件都是MSBuild脚本。当编写好MSBuild脚本后,只须要一条简单的命令,便可实现代码的编译与测试工做

参考:[独孤九剑]持续集成实践 – MSBuild语法入门

虽然MSBuild实现了自动编译与测试,可是在调用MSBuild时,咱们仍是经过输入命令进行调用的,这里掺杂了人工干预的成分,所以要将这部分工做剔除。

三、版本管理

  目前主流的版本管理有传统的SVN、分布式的Git和Mercurail各有利弊,自行选择。

四、Jenkins

  Jenkins是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专一于更为重要的业务逻辑实现上。

同时 Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展现项目构建的趋势和稳定性。下面将介绍 Jenkins 的安装与配置。

 Jenkins安装配置

  Jenkins是一个可扩展的持续集成的引擎,主要用于持续自动的构建、测试软件项目监控一些定时执行的任务。

个人环境:

机器:Windows Server 2008 R2 Enterprice

开发环境:VS2017

源代码管理:Git

软件安装

1Jenkins

最新的Jenkins 安装包能够从这里下载:http://jenkins-ci.org/

安装完成后咱们能够看到在windows服务中多了一个叫Jenkins的服务。

安装目录:C:\Program Files (x86)\Jenkins

界面:http://localhost:8080/

2.NET Framework 4.6.1   

https://www.microsoft.com/zh-cn/download/details.aspx?id=49982

3Microsoft Build Tools 2015   

https://www.microsoft.com/zh-CN/download/details.aspx?id=48159

我机器安装vs2017是已经包含了msbuild(C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe),全部也能够不用下载。

MSBuild功能是“对.NET项目的源码进行编译”,虽然平时咱们使用 Visual Studio 都是图形界面编译、发布程序,但实际上 Visual Studio 是去调用 MSBuild 来进行各类操做的,因此咱们要想让 Jenkins 也能自动编译代码,也要为它准备一套 MSBuild。

4.NET Framework 4.6.1 Developer Pack   

https://www.microsoft.com/zh-CN/download/details.aspx?id=49978

5NuGet x86 Commandline        

 https://dist.nuget.org/index.html

NuGet 的控制台程序,在编译程序以前,先须要使用 NuGet 进行包还原。这个软件不须要安装,放在一个固定的位置就行,例如F:\Software\nuget.exe 。

Jenkins->简单操做

打开控制台/命令行 - >转到Jenkins安装目录。分别执行如下命令:
中止:jenkins.exe stop

开始:jenkins.exe start

从新启动:jenkins.exe restart

登陆界面用户名密码

若是不记得密码了,能够配置为不使用密码,以下:

修改安装目录下的config.xml文件的节点  <useSecurity>false</useSecurity>

而密码保存在文件:credentials.xml

jenkins->安装插件

Git插件获取源代码,MSBuild插件编译.net项目。 

http://localhost:8080/Manager Jenkins => Manage Plugins

Available选项卡中,选中git Plugin安装。

Available选项卡中,选中MSBuild安装。

jenkins->全局工具配置/系统设置

http://localhost:8080/configureTools/

 

 

其中 MSBuild Name 能够随便。

Path to MSBuild 就是咱们MSBuild在当前电脑的路径:C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe

对应:VisualStudioVersion=11.0

注:实践证实,这里应该要根据使用的开发环境VisualStudio版原本决定。 即对应.NET版本的MSBuild编译器目录。

eg:使用VS2017编写的程序,这里应该填写 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe

对应:VisualStudioVersion=15.0

 建任务

回到主界面,而后点击 New Job, 输入任务名称,推荐用英文,咱们选择构建一个自由风格的软件项目。

项目名称:FirstSite

则从git上下载的代码放置在jenkins服务器的 d:\Jenkins\workspace\FirstSite目录【即工做目录 Workspace】下。(注:不必定是d盘,是jenkins 的安装目录)       

源代码管理

源码管理选择git,配置咱们的源代码的路径和用户名密码

 

 MSBuil编译(介绍)

  有好多种命令方式,主要介绍“windows批处理命令“和”Build a Visual Studio project or solution using MSBuild “

一、Execute Windows batch command(执行windows批处理命令)

命令举例:cd %WORKSPACE%\DEV\    npm install

其中 WORKSPACE解释:The absolute path of the directory assigned to the build as a workspace.(分配给构建的目录的绝对路径做为工做区) 即git文件down下来的路径(d:\Jenkins\workspace\FirstSite)。

点击输入框下方的“可用环境变量”   在Execute shell 或 Execute Windows batch command文本框中使用,使用方法:%变量名%

二、Build a Visual Studio project or solution using MSBuild 

 

 

MSBuild Build File:解决方案的相对路径。【项目文件或者工程文件的名称】

.\angularDemo\angularDemo.csproj

注:指定编译文件时,能够指定解决方案(.sln)也能够指定为项目文件(.csproj),这样就只针对某个模块进行编译。

Command Line Arguments:MSBuild 的命令行参数

MSBuild.exe 用指定的选项生成指定的项目或解决方案文件。

方式一:根据vs项目发布配置文件来编译发布

【能够分本地发布和远程WebDePloy发布,依据在vs中的发布方式而定】

/t:Rebuild

/p:Configuration=Release

/p:DeployOnBuild=True;PublishProfile=Testing-Environment-CI-publish 

其中 /t:Rebuild 表示每次都重建,不使用增量编译

PublishProfile表示使用 Testing-Environment-CI-publish.pubxml 发布文件来发布项目

 注:/t是/target的缩写,/p是/property的缩写,多个属性间用分号或逗号分隔,最后不须要分号或逗号。

MSBuild 命令行参考

方式二:直接使用MSBuild命令来编译发布

参考:

/p: DeployOnBuild=true;

ExcludeGeneratedDebugSymbol=false;

ExcludeXmlAssemblyFiles=false;

SkipExtraFilesOnServer=True;

WarningLevel=4;

NoWarn=1591;

DeployTarget=MSDeployPublish;

MSDeployPublishMethod=WMSVC;

AllowUntrustedCertificate=True;

MsDeployServiceUrl=https://172.xx.yy.zz:8172/msdeploy.axd;

username=WDeployAdmin;

password=yyyyyy;

DeployIisAppPath=test/FirstSite;

Configuration=Dev

解释:

DeployOnBuild=true 表示启用编译并发布

Configuration=Release 表示编译Release版本

TargetFrameworkVersion=v4.5表示编译的目标是.NET

PublishProfile指定建立的Profile名称(不用写目录,仅文件名便可,并且不用扩展名)  程序编译成功后就是发布到咱们PublishProfile指定的文件夹中

VisualStudioVersion=11.0 表示VS2012

MsDeployServiceUrl  指定发布服务器链接的URL(在IIS站点右键启用Web Deploy发布来设置的)

DeployIisAppPath  要发布的位置。Eg:  Test/FirstSite 对应的在iis中是

Username 用户名。此处的用户名和密码,来自站点的IIS里面设置的windows用户。

 

 

设置密码

VS中站点发布

 在VS中右击项目,发布

一、发布方法:选 文件系统

目标位置:E:\IIS_Deploy\FirstSite

 

PublishProfile=CustomProfile1,点发布会在目标位置生成相应的文件,在iis中配置后便可访问网站。

设置绑定800端口,访问:http://localhost:800/FirstSite/Practice/pages/#/

二、若发布方法选 Web Deploy,则是

 

 

服务器不写localhost而是写ip就会要求填写用户名和密码。

这些配置在Jenkins搭建.NET自动编译发布远程环境中会提到。

 MSBuil编译构建(实际配置)

1nuget包还原

咱们在把项目提交到git或者svn上的时候并不包含这些包,咱们把项目从git上拉到下来后用vs打开,vs会首先来还原这些nuget包,一样,若是咱们是使用msbuild.exe来构建这些项目,也须要首先还原nuget包,不然项目因为缺乏依赖而没法正常编译,下面咱们就介绍如何使用nuget.exe来还原项目依赖。

在jenkins的项目,配置中,build节中 增长一个bat处理命令:

"F:\Software\nuget.exe" restore "%WORKSPACE%\angularDemo.sln"

指定 nuget.exe 的路径,而后使用 restore 命令,对当前目录下的 xx.sln 解决方案【不要用项目csproj】文件进行包还原。

注:bat命令 必需要在Build命令以前。点中拖动,可调换顺序。

二、Build配置——发布到本地

根据前面VS中发布项目,生成的CustomProfile1 来配置

一、MSBuild Build File:配置为.\angularDemo\angularDemo.csproj

或者C:\Program Files (x86)\Jenkins\workspace\FirstSite\angularDemo.sln 均可以。

二、Build的命令行参数:

/t:rebuild

/p:DeployOnBuild=true;Configuration=Release;VisualStudioVersion=15.0; PublishProfile=CustomProfile1

构建以后,站点会发布到CustomProfile1中设置的publishUrl的物理路径下。

常见的构建问题报错,参考:Jenkins构建常见问题

 

其余参考:

使用jenkins配置.net mvc网站进行持续集成一

持续集成

相关文章
相关标签/搜索