jenkins+windows+springboot+.net項目自動化部署圖文教程


之前一直在linux中使用jenkins部署程序,正好現在的項目包括了winfrom程序,所以需要部署到windows系統中

jenkins官網:https://jenkins.io/

下載之后運行jenkins.msi即可傻瓜化安裝,這里不再重復演示安裝過程,如果遇到安裝問題請自行百度。

首先,先介紹一下我的項目結構和發布流程:

項目由java與c#混合開發,使用微服務架構,一共2個子服務,一個win程序,還有eureka服務、網關服務

由於我使用的是springboot構建的項目,為了能夠實現自動化發布,我選擇適合winsw將我的jar包打包成windows服務 https://github.com/kohsuke/winsw

其中exe是使用.net 4.6開發的,為了能夠讓jenkins自動構建,我選擇使用MSBuild來編譯.net項目

1、創建一個新的認證

 

 

2、新建一個自由風格的項目

 

3、配置項目

這里我使用的GitHub來作為代碼倉庫,關於SVN在網上也有教程,可根據自己實際情況配置

要使用GitHub你需要先安裝Github Plugin插件,不過新版本的jenkins默認已經給安裝好了,只需配置一下本地的git.exe路徑,注意要cmd文件夾下的git.exe

 

下面的GitHub hook trigger for GITScm polling是新版本jenkins的選項,以前jenkins是叫另外一個名字,反正帶有GitHub關鍵詞你選中就行

因為我是在windows系統中部署,所以使用的是批處理腳本,下面被遮擋是我項目的具體路徑,因不想公布所以遮擋住

在批處理中我首先做了這么幾件事:

1、jenkins從github上拉取項目源代碼

2、判斷本地工作空間是否存在publish文件夾(用於存放編譯好的程序以及腳本)

  如果存在,首先調用stop腳本強制停止所有占用端口的程序,然后依次關閉對應的windows服務,最后把publish文件夾里的內容全部清空

  ps:先強制關閉是有原因的,因為程序被占用,你后面的清空操作不會成功的

  如果不存在,新建publish文件夾,將所有mvn clean package打包的jar文件從target目錄拷貝到publish文件夾

3、調用MSBuild命令編譯.sln解決方案

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

    第一行是指的重新構建解決方案

  第二行是指的此次編譯時Release方式而不是Debug方式

  第三行是指的使用Framework 4.6來編譯項目

 

當MSBuild編譯好項目之后, 把bin/Release文件夾中的所有文件全部拷貝到publish\app\Release文件夾中

 

4、發布到遠程服務器

要使用這一步操作,你需要安裝Publish over FTP插件並且配置他

 

 

到此整個自動發布過程就好了,但是自動部署還沒完成,由於是windows操作系統,我沒有辦法使用Publish over SSH插件來遠程執行shell命令,所以,我的解決方案是:

我將所有的操作都封裝成了批處理腳本,這個腳本在自動發布的時候就已經帶到了遠程服務器中,我只需運行一下run.bat或者stop.bat即可完成所有服務和程序的安裝卸載與運行停止

但我不想每次都連接服務器去發布,因為是測試環境,每次都連服務器發布很麻煩,所以我寫了一個socket程序監聽命令,收到指令后自動調用bat腳本

 

到此,全部結束!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM