一.新節點slave搭建
之前的主節點master:Centos7 190.168.3.250
新建的slave節點環境:Centos7 190.168.3.251
系統設置-節點管理
設置連接root賬號
保存
節點必須提前配置好java環境
啓動代理
slave節點啓動正常
注:
配置前要保證時間同步,要不時鐘差異會報錯顯示
slave /opt下生成工作目錄
二.測試新節點
構建之間這個hello任務
選擇限制項目的運行節點,選擇slave
構建任務是執行 hello併發送郵箱
立即構建
查看日誌在slave上執行了構建
在slave的工作目錄下的workspace裏已經有了構建的任務hello
三.創建流水任務Pipeline
1.創建前的準備
slave機子centos7系統 ,地址190.168.3.251
配置好java環境,maven,還有tomcat,deploy.sh腳本
配置好java和maven環境變量
export MAVEN_HOME=/opt/apache-maven-3.6.0
export JAVA_HOME=/opt/jdk1.8.0_191
export PATH=$JAVA_HOME/bin:$PATH:$MAVEN_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
tomcat爲之前master複製過來的,所有端口設置的還是8090
deploy.sh腳本里複製編譯好的hello.war包位置變了,需要修改,變爲slave分工作目錄/opt/workspace下了,剩下的與之前一樣
#!/bin/bash
tomcat_home=/opt/tomcat
#1.檢測 tomcat 是否存在
tomcat=ps -ef |grep /opt/tomcat | grep -v 'grep\|tail'| awk '{print $2}'
echo ${tomcat}
if test -z ${tomcat}
then
echo "tomcat 沒有啓動"
else
echo "關閉 tomcat"
sh ${tomcat_home}/bin/shutdown.sh
sleep 2
fi
#2.備份原先/opt下的war包
mv ${tomcat_home}/webapps/hello.war /mnt/hello.war-$(date +%Y%m%d-%H:%M:%S)
#3.將jenkins workspace中打包好的包放到/opt下的tomcat
cp -r /opt/worksqace/workspace/pipline/target/hello.war ${tomcat_home}/webapps/hello.war
#4.啓動/opt下的 tomcat
sh ${tomcat_home}/bin/startup.sh
tomcat=ps -ef |grep /opt/tomcat | grep -v 'grep\|tail'| awk '{print $2}'
echo ${tomcat}
sleep 6
if test -z ${tomcat}
then
echo "tomcat 啓動失敗"
else
echo "部署成功"
fi
2.新建流水線任務
新建Pipeline script 腳本任務
pipeline {
agent {label 'slave'}
stages {
stage('Checkout') {
steps {
echo 'Checkout'
git credentialsId: '61406221-afad-495c-808f-d492fb45876b', url: 'https://github.com/anfishr/hello.git'
}
}
stage('Build') {
steps {
echo 'Building'
sh 'mvn clean package'
}
}
stage('deploy') {
steps {
echo 'deploy'
sh 'JENKINS_NODE_COOKIE=dontKillMe /opt/deploy.sh'
}
}
}
}
其中的git拉取代碼的寫法可以參照 Pipeline Syntax
選擇git
加上項目地址和賬號
點擊下面的生成
複製到git任務處即可,完成後保存
3.構建新建的pipeline任務
查看執行日誌輸出顯示沒有找到mvn
但是我們剛纔已經設置好java和maven的環境變量
檢查節點的環境變量
只能看見java的環境變量,沒有maven的環境變量
設置軟連接,將mvn加入到節點的環境變量下/usr/bin,好讓節點能找到mvn命令
再次執行構建,成功
瀏覽器查看
/mnt還有備份的代碼