liunx關於pipeline的概念以及語法都可以去https://www.w3cschool.cn/jenkins/jenkins-e7bo28ol.html瀏覽!
一、Liunx環境部署
二、jenkins環境搭建
三、jenkins環境准備:
1.JDK、Git、Maven配置(環境變量)
進入"系統管理",選擇“Global Tool Configuration”,
以JDK舉例:別名:插件標識,給自己看的,方便識別;
JAVA_HOME:JDK的安裝路徑
2.全局屬性設置(系統環境變量)
“系統管理”->"系統設置",“全局變量”:鍵值對列表,鍵:PATH(標識id);值:git、jdk等的執行路徑
3.郵箱設置
進入“系統管理”,選擇“系統設置”,
(1)、找到"jenkins Location“;
jenkins URL是默認的,可以不用修改,
系統管理員郵件地址:寫發件人的郵箱
(2)、找到“郵件通知”
SMTP服務器:遵循SMTP 協議的發送郵件服務器;SMTP是郵件傳輸協議;
用戶默認郵件后綴:接受郵件的用戶的郵件后綴
用戶名:發件人的郵箱地址
密碼:發件人的郵箱密碼
通過發送測試郵件測試配置:點擊測試按鈕“Test configuration”,如果郵件配置正確的情況下,接受人就能夠接受到一封測試郵件
4.全局憑證創建
(1)jenkins服務器登錄節點服務器的憑證創建,Credentials->System->Global credentials(unrestricted),選擇"Add credentials"新增憑證
(2)創建jenkins服務器訪問GitHub的憑證
5.linux節點創建
選擇“系統管理”里的“節點管理“,然后新建節點
四、構建pipeline項目
創建pipeline風格的項目,自動部署后端的測試環境,從部署代碼、移動代碼到目標目錄、kill掉tomcat服務,重啟tomcat服務,最后發送構建郵件等整個流程
pipeline{ //參數 parameters{ string(name:'Agent_47',defaultValue:'TEST_2',description:'目標節點服務器') string(name:'Node_GitUrl',defaultValue:'/home/Node_Git',description:'目標節點服務器的工作空間路徑') string(name:'Pro_URL',defaultValue:'/home/pro',description:'目標節點服務器的項目部署環境路徑') string(name:'Cred_ID',defaultValue:'3619798a-5cf2-4f0b-b9b1-4320faf7c4f7',description:'節點服務器和git服務器之間的憑證') string(name:'GitHub_Addr',defaultValue:'ssh://XXXX@git.wowocai.com:29418/SQA/Automation/XXX/CRM',description:'git倉庫地址') string(name:'MAS',defaultValue:'master',description:'git倉庫分支標識') string(name:'Pro_Name',defaultValue:'XXX_crm',description:'項目ID') string(name:'Tomcat_Start',defaultValue:'/usr/data/XXX_crm/bin/startup.sh',description:'項目的tomcat啟動文件') string(name:'Build_Result',defaultValue:'構建失敗,\n構建成功',description:'構建結果') string(name:'Email_Reception',defaultValue:'XXXXX@qq.com',description:'郵件接收人') } //執行者||工作區間,執行路徑:Node_GitUrl agent{ node{ label params.Agent_47 customWorkspace params.Node_GitUrl } } //options{ //整個項目的執行時間是0.1小時 // timeout(time:0.1,unit:'HOURS') //項目執行失敗,重試3次,3次后再失敗則宣告失敗 // retry(3) // } //為每個階段(stage)建設自己的執行者或者工作區間|節點 stages{ stage('參數初始化'){ steps{ script{ def BUILD=params.Build_Result.split(",") build_faild = BUILD[0] build_success = BUILD[1] } } } stage('清除工作空間'){ //steps最小執行單元,cleanWs():清除工作空間 steps{ cleanWs() } } stage('代碼獲取'){ steps{ git credentialsId:params.Cred_ID, url:params.GitHub_Addr, branch:params.MAS } } stage('清楚FSDK項目的CRM所有文件'){ steps{ sh "rm -rf ${params.Pro_URL}/${params.Pro_Name}*" } } stage('推送最近拉取的FSDK項目的CRM所有文件'){ steps{ sh "mv ${params.Pro_Name} ${params.Pro_URL}" } } stage("環境部署"){ steps{ //判斷fsdk_crm的進程是否存在,如果不存在則重新啟動,如果存在則kill掉該進程,然后重新啟動 sh '''count=`ps -ef |grep fsdk_crm|grep -v "grep" |cut -c 9-15` if [ $? -eq 0 ] then /usr/data/fsdk_crm/bin/startup.sh sleep 30 else `kill -9 $count` /usr/data/fsdk_crm/bin/startup.sh sleep 30 fi''' // sh "ps -ef|grep fsdk_crm|grep -v grep|cut -c 9-15|xargs kill -9" } } } post{ failure{ echo "構建失敗" emailext body: '''**************************************<br> XXX測試環境 ${build_faild} <br> **************************************<br>''', subject: 'Test', to:params.Email_Reception } success{ echo "構建成功" emailext body: '''**************************************<br> ${build_success} XXX測試環境已提測部署<br> **************************************<br>''', subject: 'Test', to:params.Email_Reception } } }
構建結果: