Docker部署Jenkins發(fā)布Springboot程序

持續(xù)集成/CI(Continuous integration),頻繁將已完成的,代碼提交到主干。
持續(xù)交付/CD(Continuous delivery),頻繁將軟件最新版本交給質(zhì)量團(tuán)隊(duì)或用戶進(jìn)行評(píng)審。
持續(xù)部署/CD(Continuous deployment),指通過(guò)評(píng)審的代碼自動(dòng)部署到生產(chǎn)環(huán)境。
持續(xù)部署的前提是能自動(dòng)化完成測(cè)試、構(gòu)建、部署等步驟。

1、docker安裝jenkins

docker pull jenkins/jenkins
mkdir /home/jenkins
chown -R 1000:1000 /home/jenkins/
docker run -itd -p 9090:8080 -p 50000:50000 --name jenkins --privileged=true -v /home/jenkins:/var/jenkins_home jenkins/jenkins:latest

2、jenkins配置

  • 安裝默認(rèn)所有插件
  • 創(chuàng)建管理員賬號(hào)
  • 修改插件國(guó)內(nèi)鏡像源:依次點(diǎn)擊Maanage Jenkins→Manage Plugins→【Advanced,劃到最下面修改升級(jí)站點(diǎn)URLhttps://repo.huaweicloud.com/jenkins/updates/update-center.json
  • 配置Global Tool Configuration下的jdk、maven、git等信息。
  • 憑據(jù)配置:依次點(diǎn)擊【Manage Jenkins】→【Manage Credentials】,點(diǎn)擊【全局】→【添加憑據(jù)】添加gitee賬號(hào)密碼。

4、免密訪問(wèn)應(yīng)用服務(wù)器

  • jenkins服務(wù)器生成秘鑰對(duì),將公鑰復(fù)制到應(yīng)用服務(wù)器的 ~/.ssh/authorized_keys
ssh-keygen -m PEM -t rsa

5、創(chuàng)建Maven項(xiàng)目

  • 在【Source Code Management】——>【Git】處輸入倉(cāng)庫(kù)地址、選擇憑據(jù)。
  • 配置Pro Steps,在Goals and options 添加:clean package -U -Dmaven.test.skip=true
  • 點(diǎn)擊【Build Now】進(jìn)行構(gòu)建,點(diǎn)擊【Build History】下的構(gòu)建進(jìn)程,選擇【Console Output】查看輸出。
  • 點(diǎn)擊【W(wǎng)orkspace】查看源代碼。
  • 配置Post Steps, 選擇 Execute shell,放置發(fā)布腳本。

程序發(fā)布腳本

#!/bin/bash

# 定義部署的目錄和項(xiàng)目名稱
DIR="/home/project"
projectName="wuzichaoshi"

# 待部署的應(yīng)用服務(wù)器
server_ips="10.112.1.71"
for server_ip in ${server_ips[@]}; do

    echo "ssh連接服務(wù)器。"
    ssh -Tq -oStrictHostKeyChecking=no root@${server_ip} <<EOF
mkdir -p $DIR/${projectName}    $DIR/backup/${projectName} 
if [ -f "$DIR/${projectName}/${projectName}.jar" ];then
  mv $DIR/${projectName}/${projectName}.jar $DIR/backup/${projectName}/${projectName}-$(date "+%Y%m%d_%H%M%S").jar 
fi
EOF

    echo "拷貝jar包到目標(biāo)服務(wù)器的tmp目錄下"
    scp -q -oStrictHostKeyChecking=no ${WORKSPACE}/target/*.jar root@${server_ip}:/tmp/${projectName}.jar

    echo "ssh遠(yuǎn)程連接進(jìn)行發(fā)布操作"
    ssh -q -oStrictHostKeyChecking=no root@${server_ip} <<EOF
mv /tmp/${projectName}.jar $DIR/${projectName}/${projectName}.jar

EOF

done

echo "成功!腳本已部署到服務(wù)器!"
bash $DIR/${projectName}/stop.sh
bash $DIR/${projectName}/start.sh

start.sh

#!/bin/bash
set -e #一旦報(bào)錯(cuò)立即停止                                                                                                                                                                                                                                                      
set -o pipefail
  
# 添加JDK路徑
JAVA_HOME=/usr/local/jdk1.8
  
# 項(xiàng)目根目錄和項(xiàng)目名稱
DIR="/home/project"
projectName="wuzichaoshi"
 
nohup $JAVA_HOME/bin/java -jar ${DIR}/${projectName}/${projectName}.jar > release_out.log 2>&1 &
 
echo $! > /var/run/${projectName}.pid

stop.sh

#!/bin/bash
  
# 項(xiàng)目根目錄和項(xiàng)目名稱
projectName="wuzichaoshi"
  
PID=$(cat /var/run/${projectName}.pid)                                                                                                                                                                                                                                        
kill -9 $PID

參考:https://www.cnblogs.com/dyd168/p/14391485.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。