Jenkins は SpringBoot をデプロイし、バージョンのロールバックをサポートします

元のアドレスwww.freesion.com

環境の説明:

準備条件:

1. 新しいフリースタイルプロジェクトを作成する

新しいタスク: tes-rollback
![][img-0]

2. 廃棄戦略

ここに画像の説明を挿入します

3. パラメータ化されたビルドプロセスを構成する

3-1. オプションパラメータの追加

このプロジェクトがパラメータ化されていることを確認します->パラメータを追加->パラメータを選択

![][img-2]

以下に示すようにパラメータを設定します。

![][img-3]

3-2. キャラクターパラメータの追加

パラメータを追加->文字列パラメータを選択
![][img-4]

以下に示すようにパラメータを設定します。
![][img-5]

4. ソースコード管理

4-1. プロジェクトのsvnアドレスを入力

ソースコード管理 -> Subversion を選択 -> プロジェクトの svn アドレスを入力 注
: svn アドレスの後に @HEAD を追加すると、毎回最新のコードがプルされます

![][img-6]

4-2. svnのユーザー名とパスワードを入力

ここに画像の説明を挿入します

![][img-8]

4-3. 設定したユーザーを選択します

![][img-9]

5-1. Mavenのパッケージ化設定

最上位の Maven ゴールを呼び出すことを選択します
![][img-10]

ターゲットにパッケージ化コマンドを入力します: clean install -Dmaven.test.skip=true -Pdev
![][img-11]

注: -Pdev は、プロジェクトが環境を区別するためのものなので、追加する必要はありません。

5-2. シェル設定の実行(バックアップ)

ビルドにビルドステップを追加 -> シェルを実行
ここに画像の説明を挿入します

次のスクリプトを入力します。

case $Status in
  Deploy)
    echo "Status:$Status"
	path="${WORKSPACE}/bak/${BUILD_NUMBER}"
	if [ -d $path ];
	then
		echo "The files is aready exists "
	else
		mkdir -p $path
	fi
	\cp -f ${WORKSPACE}/target/*.jar $path
	echo "Completing"
  ;;
  Rollback)
    echo "Status:$Status"
	echo "Version:$Version"
	cd ${WORKSPACE}/bak/$Version
	\cp -f *.jar $path ${WORKSPACE}/target
  ;;
  ;;
  *)
  exit
  ;;
esac

リリース後は以下のようにバックアップされます
![][img-14]

![][img-15]

5-3. バックアップスクリプトを定期的に削除する

プロジェクトのバックアップを無制限に行うとディスクがすぐにいっぱいになってしまうため、古いバックアップを消去するメカニズムが必要です。ここではスクリプトが構成されており、リリースごとに 1 回実行され、バックアップの数が 5 を超えているかどうかが判断されます。超えている場合は、古いバックアップを削除し、最新の 5 つだけを保持します。
別のシェル実行ステップを追加し、次のスクリプトを入力します。バックアップの数を変更して増減できます。

ReservedNum=5  
FileDir=${WORKSPACE}/bak/
date=$(date "+%Y%m%d-%H%M%S")

cd $FileDir   
FileNum=$(ls -l | grep '^d' | wc -l)   

while(( $FileNum > $ReservedNum))
do
    OldFile=$(ls -rt | head -1)         
    echo  $date "Delete File:"$OldFile
    rm -rf $FileDir/$OldFile
    let "FileNum--"
done

6.展開(jenkins和应用在同一台服务器,直接部署即可

ビルド時のシェル スクリプトを追加します。

echo "==========定义常量=========="
APP_NAME=jenkins-demo.jar

echo "==========重命名 =========="
mv target/*.jar $APP_NAME

echo "==========  杀掉之前的进程 =========="
BUILD_ID=dontKillMe
PIDS=`ps -ef | grep $APP_NAME | grep -v grep | awk '{print $2}'` 
for pid in $PIDS;
 do kill -9 $pid;
 done
echo "========== 进程停止结束 =========="

tempPath=logs
if [ ! -d "$tempPath" ]; then
mkdir $tempPath
fi

#ps -ef | grep "$APP_NAME" | grep -v grep |awk "{print $2}" |xargs kill -9
echo "========== 开始启动 java 项目 =========="

#echo "********************************************************************"
#echo "****如果脚本使用nohup启动,则必须在他之前指定BUILD_ID(名字可以随便定义)**"
#echo "********************************************************************"
BUILD_ID=jenkins-demo
nohup java -jar $APP_NAME --server.port=81 > ./logs/nohup.log 2>&1 &

echo "==========项目启动成功,开始输出日志,请稍后 ……  =========="
sleep 3 
tail -n 800 ./logs/nohup.log 

7.展開-( jenkins和应用不在同一台服务器)

ビルド後のアクションを追加する

![][img-17]

![][img-18]

7. プロジェクト展開サーバー スクリプト

7-1. スクリプトを書く

サーバー 192.168.122.4 で次のコマンドを実行します。

mkdir -p /root/Jenkins-in/
cd /root/Jenkins-in/
vi remit-channel.sh

スクリプトの内容は次のとおりです。

#!/bin/bash
DATE=$(date +%Y%m%d%H%M%S)
export JAVA_HOME PATH CLASSPATH
JAVA_HOME=/data/jdk1.8.0_261
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
DIR="/data/P4/p4-remit-channel"
JARFILE="p4-remit-channel-0.0.1-SNAPSHOT.jar"

if [ ! -d $DIR/backup ];then
   mkdir -p $DIR/backup
fi
cd $DIR

ps -ef | grep $JARFILE | grep -v grep | awk '{print $2}' | xargs kill -9
mv -f $JARFILE backup/$JARFILE$DATE
mv -f /root/Jenkins-in/$JARFILE .

java -jar  -Xms512m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m $JARFILE > out.log &
if [ $? = 0 ];then
        sleep 30
        tail -n 50 out.log
fi

cd backup/
ls -lt|awk 'NR>5{print $NF}'|xargs rm -rf

7-2. スクリプト実行権限

chmod +x test-job.sh

  • メイン プロジェクト インターフェイスに戻り、[Build with Parameters] をクリックします。

![][img-19]

  • 公開するには、「デプロイ」->「ビルドの開始」を選択して公開を開始します。

![][img-20]

  • ロールバックするには、[ロールバック] を選択します --> ロールバック バージョンを入力 ----> ビルドを開始し、ビルド履歴から入力バージョン番号を選択します

ここに画像の説明を挿入します

1. Jenkins を使用して SpringBoot プロジェクトを自動的にデプロイする: https://blog.csdn.net/zjh_746140129/article/details/80904876
2. Jenkins バージョンのロールバック: https://www.jianshu.com/p/af5fecaa8357

おすすめ

転載: blog.csdn.net/caidingnu/article/details/129478166