前言
什么是持續集成呢?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——這里設置的是發件人信息(12345678@qq.com-在這里就輸入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,這樣就不需要這一步連接服務器的操作了。可以直接在服務器上一次性解決問題。
逃避不一定躲得過,面對不一定難受.轉身不一定最軟弱.
歡迎大家掃描下方二維碼,和我一起踏上設計模式的闖關之路吧!