每次发布的时候,手动发布所做的事情无非就是备份,生成,发布。而手动做这些循环的事情,如果偶尔一次还好,当在产品持续迭代的时候,无限重复的步骤就会让人很烦躁。这时候Jenkins的作用就提现出来了,让我们解放双手。
准备工作
1、首先我们要把Asp.Netcore发布成基于windows服务的发布方式。
2、下载并安装Jenkins,Jenkins的安装没有什么注意的,一直下一步,全部使用默认设置即可,链接:Jenkins 的安装和设置。
3、若jekins安装插件失败时,请参考文章:(103条消息) Jenkins插件安装失败解决方法(本人实践绝对有效)_网易测试开发猿的博客-CSDN博客
Jenkins帮我们可以完成的事情有很多,我这里用了这三个来实现自动化部署
1.定时拉取最新代码。2.检查代码是否有改动。3.有改动后执行我们指定的脚本【可以多个脚本】。
这里我们脚本即是:1.清除之前的build 2.创建build 3.发布
开始使用Jenkins来实现Asp.Netcore的自动化部署
1、启动Jenkins服务,在安装完成后Jenkins会在windows服务里面自动安装了一个Jenkins的服务。
2、访问http://localhost:8080/,Jenkins在winserver上面默认端口是8080,然后会进入到jenkins的启动页,在启动页Jenkins会自动安装插件,选择默认的进行安装即可。
注:1. 因为是Asp.NetCore,编译时需要.netcore SDK。所以服务器上要安装对应版本的.netcore sdk。
2.这里是基于GIT进行代码仓库管理的,所以需要安装GIT客户端在服务器上(安装在默认路径即可,非默认路径需要到jenkins上进行配置GIT.exe的执行路径)。
3、开始配置项目
(1)、点击新建Item,如图
(2)、输入项目名称,并选择自由项目,并点击确定
(3)、编辑配置信息里面的源代码管理,这个配置的主要目的是让Jenkins自动拉取最新代码
(4)、配置代码拉取的规律,和构建的规律。
(5)、配置代码编译和发布脚本。
注:我这里是的Api服务是寄宿在winserver上的,所以脚本才是如下。不同的环境,不同的发布方式,脚本都不一样。
创建编译脚本
netcore是可以使用shell脚本进行编译和发布的,所以我现创建了一个shell的构建脚本,脚本代码如下:
cd ./host/Fengpin.Atlas.KernelApi.Host/
dotnet clean -c Debug -r win-x64
dotnet build
dotnet publish -c Debug -r win-x64
如图所示:
创建发布脚本
当前的项目是寄宿在winserver上,域名配置等用的是ngix来进行的端口转发。由于我们要操作的是windows的文件和服务,所以我们需要创建的window的cmd的脚本,自动发布脚本代码如下:
cd ./host/Fengpin.Atlas.KernelApi.Host/
net stop AtlasApiServer
rd/s/q E:\AtlasApiServer\FunMthod
xcopy .\bin\Debug\netcoreapp2.2\win-x64\publish E:\AtlasApiServer\FunMthod\ /s /f /h
net start AtlasApiServer
如图:
最终构建模块的效果如下:
点击最终的保存,自动发布就完成了。
线上发布和备份思路和命令,思路是每次发布前备份(把正在运行的文件拷贝到备份文件夹内,然后再开始发布新的版本),注:我这里备份文件按照精确到毫秒的时间来命名文件夹的。
:备份正在运行的代码
cd ./host/Fengpin.Atlas.KernelApi.Host/
set shijian=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
set timenow=%shijian: =0%
xcopy D:\AtlasServerCenter\AtlasApiServer\FunMthod D:\AtlasServerCenter\AtlasApiServer\BeiFen\%timenow%\ /s /f /h
这样我们就完成了Asp.netcore的自动化部署。