1. 程式人生 > >jenkins在windows上自動化部署.Net(.Net Core)專案

jenkins在windows上自動化部署.Net(.Net Core)專案

前言

  什麼是持續整合呢?Continuous integration(CI)。持續整合是一種軟體開發實踐,即團隊開發成員經常整合他們的工作,通常每個成員至少整合一次,也就意味著每天可能會發生多次整合。每次整合都通過自動化的構建(包括編譯,釋出,自動化測試)來驗證,從而儘快地發現整合錯誤。許多團隊發現這個過程可以大大減少整合的問題,讓團隊能夠更快的開發內聚的軟體。

  如果沒有持續整合會有哪一些問題呢?模組專案介面部署不及時,介面不通。每次需要手動打包最新的程式碼進行部署、釋出程式碼、線上部署都是純手工。容易出錯。浪費時間。

  現在加上持續整合解決的問題呢?專案構建自動化、整合的詳細資訊及歷史記錄的記錄、使用統一的管理、固定規定的部署流程、每天至少整合一次。

安裝

 

  這裡我採用的是使用Tomcat配合jenkins一起使用的來達成持續整合的目的。

  一、安裝Tomcat

    從官網下載Tomcat。下載地址:http://tomcat.apache.org/。

 

 

 

 

    這裡我選擇的是32-bit/64-bit Windows Service Installer (pgp, sha512)這個版本。然後依次安裝就可以了。

接下來配置環境變數:

一、修改設定:CLASSPATH:(.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%)。注意是第一個符號點!!

二、新增設定:CATALINA_HOME:(D:\tool\apache-tomcat-7.0.57)括號內為路徑名。

三、修改設定:path:(;%JAVA_HOME%;%JRE_HOME%\jre\bin)若以前配置java環境時配置過則不要再次配置。

     安裝就差不多完成了,我們在瀏覽器輸入http://localhost:8080/來看看是否出現以下頁面,出現了的話就說明安裝成功了。

 

 

 

 

 

  二、安裝JDK

    安裝JDK可以查閱這篇文章——https://www.runoob.com/java/java-environment-setup.html

  三、安裝Jenkins

  一切準備就緒之後,就開始安裝jenkins了,下載地址:https://jenkins.io/download/。前往地址下載jenkins的 war包。然後將war包放置在前面安裝的Tomcat的目錄之下(C:\Program Files\Apache Software Foundation\Tomcat 8.5\webapps——我的地址是這個)。

然後在瀏覽器中輸入http://localhost:8080/jenkins/。訪問,安裝成功的話就會出現jenkins的介面

 

 

 

這裡根據提示我們找到目錄之下就可以獲取密碼了。接下來會出現外掛安裝的一個選擇,新手直接選擇新手入門推薦安裝就好了。

 

 

 

 

 

 

這裡有時會出現安裝失敗或者連結失敗的情況,多試幾次就好了。一般是網路的問題。

  

 

 

 

 

建立管理員使用者之後就可以正式開始配置jenkins了。

配置

一、外掛安裝

  這裡需要安裝暫且有三個外掛,一個是MSBuild Plugin、一個是 Publish Over SSH、一個是Email Extension Plugin。前者是用來作為編譯的外掛,後者是用來作為連線伺服器的外掛、最後一個則是用來配置郵件傳送的外掛了。

  

 

 

二、郵箱配置

  進入系統設定,正式開始配置郵件傳送的配置。

 

 

 

 

  首先找到Jenkins Location設定系統管理員的郵件地址。

 

 

 

 

  然後找到Extended E-mail Notification設定,這裡就可以開始設定郵件的傳送配置了。這裡我採用的是qq郵箱的配置。 

 

 

 

 

 

 

 

 

 

SMTP server——SMTP 伺服器的配置

Default user E-mail suffix——預設電子郵件的字尾

User Name——這裡設定的是發件人資訊([email protected]在這裡就輸入12345678)

Password——這裡不是填寫密碼,這裡輸入的是開通SMTP 的授權碼

SMTP port——SMTP 預設埠開啟465

Default Content Type——郵件內容的格式

Default Recipients——預設收件人

Default Subject——預設主題

Default Content——預設內容

 

郵件通知內容的配置的模板:

 

<!DOCTYPE html>    

<html>    

<head>    

<meta charset="UTF-8">    

<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次構建日誌</title>    

</head>    

    

<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"    

    offset="0">    

    <table width="95%" cellpadding="0" cellspacing="0"  style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">    

        <tr>    

            本郵件由系統自動發出,無需回覆!<br/>            

            各位同事,大家好,以下為${PROJECT_NAME }專案構建資訊</br>

            <td><font color="#CC0000">構建結果 - ${BUILD_STATUS}</font></td>   

        </tr>    

        <tr>    

            <td><br />    

            <b><font color="#0B610B">構建資訊</font></b>    

            <hr size="2" width="100%" align="center" /></td>    

        </tr>    

        <tr>    

            <td>    

                <ul>    

                    <li>專案名稱 : ${PROJECT_NAME}</li>    

                    <li>構建編號 : 第${BUILD_NUMBER}次構建</li>    

                    <li>觸發原因: ${CAUSE}</li>    

                    <li>構建狀態: ${BUILD_STATUS}</li>    

                    <li>構建日誌: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>    

                    <li>構建  Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li>    

                    <li>工作目錄 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>    

                    <li>專案  Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li>    

                </ul>    

 

<h4><font color="#0B610B">失敗用例</font></h4>

<hr size="2" width="100%" />

$FAILED_TESTS<br/>

 

<h4><font color="#0B610B">最近提交(#$SVN_REVISION)</font></h4>

<hr size="2" width="100%" />

<ul>

${CHANGES_SINCE_LAST_SUCCESS, reverse=true, format="%c", changesFormat="<li>%d [%a] %m</li>"}

</ul>

詳細提交: <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a><br/>

 

            </td>    

        </tr>    

    </table>    

</body>    

</html>

 

 

三、 Publish over SSH配置

接下來我們就開始配置SSH連線伺服器配置了。

 

 

 

 

 

按照上面的配置進行設定就可以了。

Passphrase——密碼或金鑰

Name——此連線服務的名稱

Hostname——伺服器的地址

Username——伺服器使用者名稱

Remote Directory——傳輸的遠端目錄

Use password authentication, or use a different key——此選項可另設定其他的密碼

四、 全域性工具配置

進入Global Tool Configuration設定全域性工具設定,這裡首先我們得設定git,這個不設定後面可能就拉取不到程式碼了。再然後設定MSBuild,這個設定就是用來給專案進行編譯的。

 

 

 

 

構建

到這裡安裝和配置都已經結束了。我們可以正式開始構建專案了。這裡我們分為對.Net 和.Net Core專案進行整合。配合使用則是Git進行程式碼的提交及拉取。

這裡我們選擇開始構建一個自由風格的專案。

 

 

然後進行專案描述填寫

 

 

 

 

這裡就開始設定原始碼管理了。選擇git並輸入地址。隨後點選高階,設定使用者名稱和密碼,然後返回此頁面選擇剛設定的證書即可

 

 

 

 

然後開始構建觸發器,這裡我設定的觸發器的時間是每分鐘輪詢是否觸發。時間大家可以根據情況而定

 

 

 

 

這裡的構建環境,大家可以視情況而定。

 

 

 

 

到這裡就正式開始構建配置了。這裡我選擇的是使用MSBuild構建VS專案。

 

 

 

/t:Rebuild

/p:Configuration=Release

/p:DeployOnBuild=true;PublishProfile=FolderProfile

/p:OutputPath=D:\Jenkins_Publish

 

MSBuild Build File——構建的目錄(例如我的就填寫的C:\Windows\ServiceProfiles\LocalService\.jenkins\workspace\Test_Net\WebApplication1\WebApplication1.csproj)

Command Line Arguments——構建的命令

Rebuild ——重新生成

Configuration=Release——生成Release版本

DeployOnBuild=true;PublishProfile=FolderProfile——設定執行部署生成,並且執行FolderProfile目錄下的生產目錄(FolderProfile檔案在Properties目錄中)

OutputPath——輸出路徑

 

這裡我看開始配置構建完成之後的操作的簡訊配置了。

 

 

 

 

 

到這裡就已經都配置完成了,我們可以返回主頁面開始構建了。

 

 

 

 

點選立即構建,不一會我們就收到了郵件

 

 

 

 

到這裡我們使用git加上jenkins搭建的.Net 專案持續整合就完成了。那麼我們接下來看對於.Net Core專案如何進行持續整合的呢。因為.Net Core 專案可以部署在Linux上,所以下面我們就以Linux作為伺服器。在本地進行整合然後釋出到Linux。其他的操作都是一樣的,主要在構建操作和構建後操作不同。我們下面主要介紹構建操作和構建後操作。

 

 

 

 

dotnet restore

dotnet build   

dotnet publish  -c:Release -r centos.7-x64 --self-contained false   -o C:\Windows\ServiceProfiles\LocalService\.jenkins\workspace\Test_Net_Core\WebApplication2\bin\Release\netcoreapp2.2\centos.7-x64

echo 壓縮開始

 cd  C:\Windows\ServiceProfiles\LocalService\.jenkins\workspace\Test_Net_Core\WebApplication2\bin\Release\netcoreapp2.2

 7z a -tzip publish.zip C:\Windows\ServiceProfiles\LocalService\.jenkins\workspace\Test_Net_Core\WebApplication2\bin\Release\netcoreapp2.2\centos.7-x64

echo 壓縮結束

 

dotnet restore——還原

dotnet build ——構建

dotnet publish——釋出

-c:Release ——Release 版本

-r centos.7-x64 ——linux版本

--self-contained false ——框架依賴

-o D:\Jenkins_CorePublish ——釋出檔案到此目錄下

 

 

後面增加了一個壓縮命令,將釋出檔案壓縮成一個壓縮包,這個是方便後續上傳到伺服器的。SSH上傳僅上傳檔案。不帶上傳資料夾。所以我們需要進行壓縮。後續上傳到伺服器再進行解壓。

然後開始配置構建後操作,一樣的需要配置郵件資訊,郵件資訊與上面的配置一樣即可。這裡我們主要配置如何連線SSH。

 

 

 

 

這裡需要注意的是上傳的原始檔。這裡基目錄是你的jenkins工作目錄,所以需要相對於填寫位置

這裡配置上傳檔案及解壓等操作然後重新啟動linux伺服器上的服務完成釋出。

cd /home/hlz

rm -f publish

unzip publish.zip

rm -f publish.zip

cd /root

systemctl  enable Test.service

systemctl  start Test.service

systemctl  status Test.service

 

總結

  到這裡在windows上使用jenkins持續整合就完成了。中間還有一些細節需要另行配置的都可以自由發揮,主要流程大概就是這麼多了。這裡的是通過在本地繼續整合然後通過Publish over SSH外掛傳輸到linux伺服器進行.Net Core專案的部署的。那麼我們也可以直接在Linux上部署Jenkins,這樣就不需要這一步連線伺服器的操作了。可以直接在伺服器上一次性解決問題。

 


  逃避不一定躲得過,面對不一定難受.轉身不一定最軟弱.

 

歡迎大家掃描下方二維碼,和我一起踏上設計模式的闖關之路吧!

 

  

&n