本地Jenkins+Tomcat+SVN持續整合
準備工作:
Jenkins.war包
tomcat9
JDK19
SVN
Jenkins官網下載:
https://www.jenkins.io/download/
Tomcat下載
https://tomcat.apache.org/
image-20240327142646762
SVN下載
https://tortoisesvn.en.softonic.com/
DJK下載
https://www.oracle.com/java/technologies/downloads/
一、配置JDK環境變數
設定---》系統資訊---》高階系統設定---》環境變數,在系統變數裡新建JAVA_HOME,在path裡中新增%JAVA_HOME%\bin
image-20240327143723872
image-20240327143835085
檢查JDK的環境變數是否配置成功,開啟cmd,java -version
image-20240327144130827
二、配置Tomcat的
解壓apache-tomcat-9.0.87-windows-x64.zip,把解壓後的tomcat放在一個沒有中文的路徑下
image-20240327144714684
進入bin目錄,找到startup.bat,雙擊啟動,訪問http://localhost:8080/能正常開啟如下介面,說面tomcat已配置好
image-20240327145541974
三、Jenkins相關設定
1、解鎖Jenkins
把jenkins.war放到tomcat中的webapps裡,點選startup.bat重啟,訪問http://localhost:8080/Jenkins,如能開啟以下介面,則證明Jenkins環境已配置好
image-20240327154921684
管理員密碼:複製下面密碼上去,點選繼續
image-20240327142107180
2、安裝外掛
選擇預設第一個:安裝推薦的外掛即可
image-20240327155021360
跳轉到如下介面,jenkins會自動安裝頁面中顯示的外掛,根據你的網路情況,這個過程會持續數分鐘。
image-20240327155100896
3、建立第一個管理員使用者
外掛安裝完後會自動跳入管理員建立頁面:
image-20240327155634767
4、Jenkins配置URL:
使用預設的Jenkins url即可
image-20240327155733037
點選開始使用Jenkins按鈕
image-20240327155814227
成功進入Jenkins介面
image-20240327155837048
5、修改Jenkins登入密碼
由於初始密碼比較長,不好記。 滑鼠移動到右上角使用者名稱上,點選,然後再下拉選擇框點選設定(configure),進入設定頁面,找到password,填寫新密碼,點選save。
image-20240327142316214
image-20240327152612658
密碼修改成功,退出重新登入
image-20240327160046511
6、安裝相關外掛
點選Manage Jenkins ---》Manage Plugins---》Available
再搜尋框中輸入:Subversion回車,勾選---》安裝
image-20240327160138685
7、新建專案
點選新建item
image-20240327160322103
填寫任務名稱,選擇第一個自由風格即可,點選確定
image-20240327160409778
設定保持構建的天數和保持構建的最大個數
image-20240327160540161
原始碼管理
選擇Subversion,Repository URL填寫SVN的遠端倉庫地址
image-20240327160810676
Credentials--》點選新增Jenkins,型別選擇使用者名稱和密碼,新增完成後,點選新增
image-20240327160857513
點選Credentials下拉選擇框選擇剛才新增的使用者名稱和密碼
image-20240327161051046
往下翻,到:Check-out Strategy,有5個選項供選擇,預設選擇第一個即可。
image-20240327161158506
1、Use‘svn update’ as much as possible
(1)第一次釋出把工作空間清空,然後checkout一份到工作空間
(2)以後更新的時候只要svn裡面的檔案沒有更新就用工作空間的,如果SVN中有檔案更新則會同步到工作空間中。
(3)有個侷限就是工作空間的檔案內容修改了跟svn不一樣了,也不會更新了,不過一般不會修改工作空間的檔案內容
(4)svn刪除了檔案,工作目錄也會刪除
2、Always check out a fresh copy
(1)第一次釋出把工作空間清空,然後checkout一份到工作空間
(2)以後的每一次更新都清空工作空間然後checkout一份下來。也就是說svn裡有一個檔案更新,也會把整個目錄checkout一次到工作空間
3、Do not touch working copy, it is updated by other script.
(1)不要更新工作空間,由其他控制更新
4、Emulate clean checkout by first deleting unversioned/ignored files,then ‘svn update’
(1)第一次釋出把工作空間清空,然後checkout一份到工作空間
(2)以後更新的時候會判斷工作目錄下的檔案是否在svn裡存在,不存在則刪除,存在且SVN有新版本則更新,沒有新版本則不更新
(3)如果工作空間目錄被修改了,則不管有沒有新版本都會checkout下svn中的最新版本
(4)svn刪除了檔案,工作目錄也會刪除
5、Use‘svn update’ as much as possible,with ‘svn revert’ before update
(1)第一次釋出把工作空間清空,然後checkout一份到工作空間
(2)以後更新的時候不會判斷工作目錄下的檔案是否在svn裡存在
(3)如果工作空間目錄被修改了,則不管有沒有新版本都會checkout下svn中的最新版本
(4)svn刪除了檔案,工作目錄也會刪除
————————————————
設定Poll SCM
設定每分鐘輪詢一次,主要監測程式碼迭代更新,如果有新版本,則構建,否則,不構建
image-20240327161442809
新增構建步驟
由於我們的Jenkins部署在本地,所以選擇:Execute Windows batch command即可,填寫:python main.py執行專案
image-20240327161634485
image-20240327161816822
點選儲存,專案新增完成,點選Build Now立即構建啟動專案,第一次構建,會先去SVN遠端倉庫拉取程式碼到Jenkins本地的工作空間
image-20240327161950347
專案啟動成功,正在執行
image-20240327162133961
實現當有新的迭代程式碼提交時,Jenkins能夠自動構建,並且在構建完成後自動觸發下一個構建。實現一個連續的自動化流程,而不需要手動干預
1、建立Pipeline專案,命名為:Aci-EM_Pipeline
image-20240329151703780
2、配置
設定不允許併發構建(Do not allow concurrent builds)
設定輪詢 SCM(時間根據實際需求設定)
編寫Pipeline script指令碼
pipeline {
agent any
stages {
stage("Autotest") {
steps {
script {
// 檢出程式碼
checkout([$class: 'SubversionSCM',
additionalCredentials: [],
excludedCommitMessages: '',
excludedRegions: '',
excludedRevprop: '',
excludedUsers: '',
filterChangelog: false,
ignoreDirPropChanges: false,
includedRegions: '',
locations: [[
credentialsId: '238c9f81-94f9-4dec-bb25-af703b470422',
depthOption: 'infinity',
ignoreExternalsOption: true,
local: '.',
remote: 'https://svn.svnbucket.com/AciMicro_W1/Aci_EM_EEG/branches/Aci_EM_EEG_V1_TEST/trunk/'
]],
quietOperation: true,
workspaceUpdater: [$class: 'UpdateUpdater']])
// 執行自動化部署
bat 'python main.py'
}
}
}
}
post {
success {
echo 'Autotest succeeded!'
}
failure {
echo 'Autotest failed!'
}
}
}