2、jenkins+svn自動發布和回滾


Jenkins配置回滾思路:
目前只能實現使用salt來管控配置文件的管控,配置文件的版本回滾需要后續定制化開發,或者進行格外其他的管理操作。后續實現
以下配置可以為每個項目備份構建文件到本地指定路徑
clipboard
測試路徑說明:
[root@jenkins-lopc-test-11 target]# pwd
/opt/jenkins/jobs/pro/jobs/activiti/builds/30/archive/target
clipboard
 
clipboard
pro是jenkins上自己配置的文件目錄名稱
activiti是jenkins上配置的jobs名
30是版本號,jenkins上構建的版本號
activiti-0.0.1-SNAPSHOT.jar:構建的jar包
在最后一次成功的構建結果處,可以獲取到最新版本的構建文件。
如果要回滾版本,可以寫個腳本文件覆蓋發布路徑下的文件即可。
簡單說就是利用參數化構建,建立choice,choice里面建立兩個變量,一個是發布新版,一個是回滾舊版。選擇變量類型string parameter來傳遞要回滾的版本號。構建時選擇運行t腳本,寫上判斷語句,判斷是發布還是回滾。
 
安裝插件
publish Over SSH
svn
maven Integration
Publish Over SSH
  • 通過ssh連接遠程服務器,並能執行腳本部署項目
  • 安裝publish-over-ssh
  • 在“系統管理” -> “系統設置“ -> “Publish over SSH” 中配置對應的ssh信息
  • Key中填登錄遠程服務器的密碼
  • 點擊"SSH Servers"后的“增加”按鈕,新增一個遠程服務器
  • 點開“高級...”按鈕,能進一步的配置端口等信息。
  • 配置為Server信息后,點擊"Test Configuration"按鈕測試是否能夠連接成功。
clipboard
 
監測代碼變動自動部署
  • 點擊左側邊欄的“新建”按鈕,新建一個任務。
  • 填寫項目的名稱,並選擇一種構建的方式,此時我們選擇第一個,構建一個自由風格的軟件項目,然后點擊“OK”按鈕創建任務,並進行詳細的配置(這里選擇的是自由風格的軟件項目,項目的打包實在腳本命令中進行)
clipboard
 
新建任務
  • 默認設置里填寫項目名和描述,並選擇之前配置好的要連接的svn(這里使用本地鏈接配置)
clipboard
 
默認配置
  • 配置源碼,填寫要構建項目的源碼倉庫地址。
clipboard
 
配置源碼
  • 配置觸發器,選擇觸發構建的方式,選擇的定時檢測項目變動,如果檢測到分支有新的變動就觸發構建,可以自己設置時間頻率。
clipboard
 
構建觸發器
  • 配置構建后操作, 該行為會在構建完成后執行,我們選用的是“Send build artifacts over SSH”的方式,把構建完成的jar包發送到遠程服務器上用ssh命令執行啟動,此時jenkins所有機器的默認路徑是任務所在的目錄,遠程機器的默認路徑是之前publish-over-ssh中指定的文件地址。Source files指定要傳送到遠程服務器上的文件,remote directory指定的是傳送到遠程服務器上的文件地址,Remove prefix是值要去除的文件目錄,不然傳送到遠程服務器也會帶有該目錄層級結構的。exec Command里輸入的是在遠程服務器上要執行的指令。
clipboard
郵件通知
clipboard
構建部署配置
  • 項目構建后會有構建歷史,點擊進去,選擇“Console Output”就可以查看構建過程中的執行記錄
至此使用jenkins自動部署(自動打包,替換jar包到此結束。)
 
使用Jenkins配置項目回滾(jar包回退)
  • 目前實現了項目的自動部署,但有時需要在部署失敗時回滾到指定版本的構建,這樣才能更靈活的進行項目的構建部署。可以選擇“參數化的構建過程”進行傳遞不同的參數來選擇是進行新的構建還是回滾。
  • 要實現回滾,一定要在構建后將,構建完成的文件進行存檔,方便以后回滾的時候使用。
clipboard
 
構建后存檔
  • 使用參數化構建過程,讓后面的腳步可以根據不同的變量執行不同的操作。添加“Choice”參數配置不同的選項,讓選擇發布還是回滾,添加“String Parameter”參數來傳遞要回滾的版本號。
clipboard
 
clipboard
參數和構建過程
  • 構建選擇“Execute Shell”的方式,自己根據變量,自定義構建的腳本。
  • 如果是參數是選擇deploy就使用maven的構建過程進行新的構建
  • 如果是回滾,知道歷史構建后的文件,復制到當前構建結果目錄。
clipboard
腳本內容:
case ${deploy_env} in
deploy)
echo "deploy: ${deploy_env}"
pwd
#指定maven的絕對路徑,並根據實際情況使用-f指定pom.xml的地址
/usr/local/maven-3.5/bin/mvn clean install package
;;
rollback)
echo "rollback: ${deploy_env}"
echo "version: ${version}"
rm -rf target
#后續統一標准后需要將項目名稱標准化(歸檔的包根據實際情況進行填寫),
cp -R ${JENKINS_HOME}/jobs/pro/jobs/${JOB_BASE_NAME}/builds/${version}/archive/target .
pwd && ls && ifconfig
;;
*)
exit
;;
esac
構建腳本
  • 點擊構建,根據不同的參數選擇發布還是回滾,回滾的時候填寫要回滾到的歷史版本號
clipboard
構建頁面
配置文件回滾:
整體配置實現思路是通過參數,將每次構建的版本號傳遞過去,在客戶機本地創建相關相關備份目錄。備份相關目錄文件即可。后續結合怎么使用saltstack將salt管控的配置文件同步到業務機上。

source /etc/profile;
appdir="/opt/gm-activitiweb";
backupdir="/opt/backup/jenkins/${BUILD_NUMBER}";
rollbackdir="/opt/backup/jenkins/rollback";
currenttime="`date +"%Y%m%d%H%M"`";
mkdir -p ${backupdir} && cp -R ${appdir}/config ${backupdir};
if [[ ${deploy_env} == "rollback" ]];then
mkdir -p ${rollbackdir}/${currenttime} && mv ${appdir}/config ${rollbackdir}/${currenttime} &&
cp -R /opt/backup/jenkins/${version}/config ${appdir};
fi;
cd ${appdir} && sh stop.sh && sh startup.sh; 

 

 

參考鏈接:
https://blog.csdn.net/flyingshuai/article/details/73457850


免責聲明!

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



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