jenkins+windows+springboot+.net项目自动化部署图文教程

以前一直在linux中使用jenkins部署程序,正好如今的项目包括了winfrom程序,因此须要部署到windows系统中java

jenkins官网:https://jenkins.io/linux

下载以后运行jenkins.msi便可傻瓜化安装,这里再也不重复演示安装过程,若是遇到安装问题请自行百度。git

首先,先介绍一下个人项目结构和发布流程:github

项目由java与c#混合开发,使用微服务架构,一共2个子服务,一个win程序,还有eureka服务、网关服务spring

因为我使用的是springboot构建的项目,为了可以实现自动化发布,我选择适合winsw将个人jar包打包成windows服务 https://github.com/kohsuke/winswshell

其中exe是使用.net 4.6开发的,为了可以让jenkins自动构建,我选择使用MSBuild来编译.net项目c#

一、建立一个新的认证windows

 

 

二、新建一个自由风格的项目springboot

 

三、配置项目服务器

这里我使用的GitHub来做为代码仓库,关于SVN在网上也有教程,可根据本身实际状况配置

要使用GitHub你须要先安装Github Plugin插件,不过新版本的jenkins默认已经给安装好了,只需配置一下本地的git.exe路径,注意要cmd文件夹下的git.exe

 

下面的GitHub hook trigger for GITScm polling是新版本jenkins的选项,之前jenkins是叫另一个名字,反正带有GitHub关键词你选中就行

由于我是在windows系统中部署,因此使用的是批处理脚本,下面被遮挡是我项目的具体路径,因不想公布因此遮挡住

在批处理中我首先作了这么几件事:

一、jenkins从github上拉取项目源代码

二、判断本地工做空间是否存在publish文件夹(用于存放编译好的程序以及脚本)

  若是存在,首先调用stop脚本强制中止全部占用端口的程序,而后依次关闭对应的windows服务,最后把publish文件夹里的内容所有清空

  ps:先强制关闭是有缘由的,由于程序被占用,你后面的清空操做不会成功的

  若是不存在,新建publish文件夹,将全部mvn clean package打包的jar文件从target目录拷贝到publish文件夹

三、调用MSBuild命令编译.sln解决方案

  /t:Rebuild
  /property:Configuration=Release
  /property:TargetFrameworkVersion=v4.6

    第一行是指的从新构建解决方案

  第二行是指的这次编译时Release方式而不是Debug方式

  第三行是指的使用Framework 4.6来编译项目

 

当MSBuild编译好项目以后, 把bin/Release文件夹中的全部文件所有拷贝到publish\app\Release文件夹中

 

四、发布到远程服务器

要使用这一步操做,你须要安装Publish over FTP插件而且配置他

 

 

到此整个自动发布过程就行了,可是自动部署还没完成,因为是windows操做系统,我没有办法使用Publish over SSH插件来远程执行shell命令,因此,个人解决方案是:

我将全部的操做都封装成了批处理脚本,这个脚本在自动发布的时候就已经带到了远程服务器中,我只需运行一下run.bat或者stop.bat便可完成全部服务和程序的安装卸载与运行中止

但我不想每次都链接服务器去发布,由于是测试环境,每次都连服务器发布很麻烦,因此我写了一个socket程序监听命令,收到指令后自动调用bat脚本

 

到此,所有结束!

相关文章
相关标签/搜索