前言
由于公司业务的扩张导致各个分支日益增多,每次发布或测试都需要手动的编译、发布等过程,不仅造成了时间的浪费,还有可能手工因素导致各种错误,所以为了减少人工的干预,实现自动化编译、部署,现引入自动化的编译发布工具:Jenkins
本文基于.NET4.x的web项目和SVN的代码仓库以及Windows下利用Jenkins实现自动编译发布的配置
安装
1.安装并配置JDK1.8
2.下载 Jenkins的windows安装包进行安装。 地址:https://www.jenkins.io/zh/
2.1更改目录
安装好后登入 http://localhost:8080/jenkins 进入 Jenkins 初始化界面进入成功后会出现如下界面
如果需要更换jenkins的目录在输入密码之前,将安装目录中的jenkins.xml如下选项更改为自己想要的路径
然后重启jenkins,输入秘钥、推荐用户安装(如果安装失败也没事,直接跳过)创建用户
进入首页
2.2 替换插件源
找到$JENKINS_HOME/hudson.model.UpdateCenter.xml文件
把http://updates.jenkins-ci.org/update-center.json替换为国内源,例如jenkins插件地址
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
也可以在正常安装后再修改
1.进入jenkins系统管理
2.进入插件管理
3.点击高级,修改升级站点的地址为清华大学镜像地址
2.3汉化
1.插件管理
2.搜索 Localization: Chinese (Simplified)
3.安装
3.Microsoft Build Tools 2019
(a.如果使用环境变量中的msbuild(C:\Windows\Microsoft.NET\Framework\v4.0.30319)也可以不用该工具,看团队的vs统一版本是什么,这里我用的2019因为团队中用的vs的版本很多,导致环境变量中的msbuild可能编译不过去,如果已经安装了vs也可以用vs中的msbuild(C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin))
安装步骤
参考文章:https://www.cnblogs.com/gaocong/p/11733112.html
Jenkins集成Msbuild
1.安装Msbuild插件
1.插件管理
2.搜索 MSBuild Plugin
3.安装,在全局工具中会出现Msbuild的选项
2.配置Msbuild全局环境
如上图
我的编译的参数是
/t:Rebuild /p:Configuration=Release;Platform="Any CPU";TargetFrameworkVersion=v4.5 /p:VisualStudioVersion=16.0
我的发布的参数是
/t:Rebuild /p:DeployOnBuild=true /p:Confiquration=Release /p:OutDir=bin\Release /p:WebProjectOutputDir="D:\Jenkins\workspace\xxx"
自定义发布路径的参数是
/t:Rebuild /p:DeployOnBuild=true /p:Confiquration=Release /p:OutDir=bin\Release
三个自定义msbuild应对不同的场景
name:自定义名称
Path to MSBuild:环境变量可以用C:\Windows\Microsoft.NET\Framework\v4.0.30319\或者用vs中的msbuild工 具C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin
Default parameters:
/t:Rebuild --重新生成
/P:Configuration=Release --Release 生成模式(也可Debug)
/p:VisualStudioVersion=16.0 --指定子工具集版本,VS2019对应的是16.0,VS2015对应的是14.0
/p:TargetFrameworkVersion=v4.5 --Framework的版本
/p:DeployOnBuild=True --表示部署加编译
PublishProfile=xxxxxx.pubxml --使用 xxxx.pubxml 发布文件来发布项目 --这个在vs中发布项目以后对应的Properties\PublishProfiles中会有该文件
/p:WebProjectOutputDir=F:\xxx --发布的目标目录
/p:OutputPath=F:\xxxx\bin --发布的目标目录的bin目录
Jenkins集成SVN
1.插件管理
2.搜索Subversion
3.安装,在配置jenkins*的项目的时候会出现Subversion的选项如下图
创建Jenkins任务
1.创建任务
【构建一个*风格的软件项目】
也可以通过复制中填写其他的任务名称来创建
1.1 General设置
1.2源码设置
1.添加源码地址
2.填写svn用户名密码
3.全部拉取时点不能忘记,部分拉取的话填上模块名
1.3 构建触发器
Build periodically:定时构建,如上图每天8点构建
Poll SCM:定时检查源码变更 如上图我想每过一个小时查看源码是否有变更,有变更就构建
表达式语法:
* * * * *
(五颗星,中间用空格隔开)
第一颗表示分钟,取值0~59
第二颗表示小时,取值0~23
第三颗表示一个月的第几天,取值1~31
第四颗表示第几月,取值1~12
第五颗*表示一周中的第几天,取值0~7,其中0和7代表的都是周日
1.每30分钟构建一次:
H/30 * * * *
2.每2个小时构建一次``
H H/2 * * *
3.每天早上8点构建一次
0 8 * * *
4.每天的8点,12点,22点,一天构建3次
0 8,12,22 * * *
(多个时间点,中间用逗号隔开)
参考文章:https://www.cnblogs.com/caoj/p/7815820.html
1.4构建环境
1.5构建
1.增加构建步骤-选择 Build a Visual Studio Project or solution using Build
MSBuild Version 选择好之前搞好的msbuild
MSBuild Build File 填写需要编译的工程的路径
Command Line Arguments 填写上构建时需要的参数
- Execute Windows batch command
如上图
xcopy /s/r "\*.*" D:\xxxx\workspace\xxxx\ /y
del D:\Jenkins\workspace\xxxxx\Web.config
RD /s /q D:\Jenkins\workspace\xxxx\bin\xxxx\
复制路径下的文件(该工程下的相对路径)到另外一个文件夹
删除文件
删除文件夹下的内容
可以复制到对应的部署路径上面去