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
}
}
}
構建結果:

