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腳本

 

到此,所有結束!

相關文章
相關標籤/搜索