liunx關於pipeline的概念以及語法均可以去https://www.w3cschool.cn/jenkins/jenkins-e7bo28ol.html瀏覽!html
1、Liunx環境部署node
2、jenkins環境搭建linux
3、jenkins環境準備:git
1.JDK、Git、Maven配置(環境變量)後端
進入"系統管理",選擇「Global Tool Configuration」,tomcat
以JDK舉例:別名:插件標識,給本身看的,方便識別;服務器
JAVA_HOME:JDK的安裝路徑ssh
2.全局屬性設置(系統環境變量)post
「系統管理」->"系統設置",「全局變量」:鍵值對列表,鍵: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節點建立
選擇「系統管理」裏的「節點管理「,而後新建節點
4、構建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 } } }
構建結果: