图1、发布流程图,原理是编包和发布jenkins分开,每次发布的版本都存储在编译的机器上。

jenkins编包和发布分开---支持回滚发布_流程图

图2、编包jenkins的输入参数

jenkins编包和发布分开---支持回滚发布_流程图_02

图3、发布jenkins输入的参数

jenkins编包和发布分开---支持回滚发布_流程图_03

代码1、编包cp


          
          
config_file=/home/data/workspace-jenkins/deploy_msg_sender/cpp/src/msg_sender/conf
bin_file=/home/data/workspace-jenkins/deploy_msg_sender/cpp/src/msg_sender/msg_sender
msg_file=/home/data/workspace-jenkins/deploy_msg_sender_release

mkdir $msg_file/msg_sender_${compile_version}
cp -a $config_file $msg_file/msg_sender_${compile_version}/
cp $bin_file $msg_file/msg_sender_${compile_version}/
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

代码2、发布


          
          
config_file=/home/data/workspace-jenkins/deploy_msg_sender/cpp/src/msg_sender/conf
bin_file=/home/data/workspace-jenkins/deploy_msg_sender/cpp/src/msg_sender/msg_sender
msg_file=/home/data/workspace-jenkins/deploy_msg_sender_release

target_name=/opt/imserver/msg_sender


if test $environ == Test
then
target="10.0.0.181"
sed -i "s/server_host=.*/server_host=$target/g" $msg_file/msg_sender_$compile_version/conf/msg_sender.ini
if [ -f msg_sender_$compile_version.tar ]; then rm -rf msg_sender_$compile_version.tar; fi
tar -cvf msg_sender_$compile_version.tar msg_sender_$compile_version/

tar_name="/home/data/workspace-jenkins/deploy_msg_sender_release/msg_sender_$compile_version.tar"
command_1="cd $target_name && if [ -f msg_sender_$compile_version.tar ]; then rm -rf msg_sender_$compile_version.tar; fi"
command_2="cd $target_name && if [ -f msg_sender_$compile_version ]; then rm -rf msg_sender_$compile_version; fi"

command_3="cd $target_name && tar -xvf msg_sender_$compile_version.tar"
command_4="cd $target_name && ln -snf msg_sender_$compile_version msg_sender"
command_5='ps -ef|grep msg_sender|grep -v grep|awk "{print \$2}"| xargs kill -9'

cd /home/data/ansible/ && ansible-playbook playbook-standard.yaml --extra-vars "{'host':'$target', 'tar_name':'$tar_name', 'target_name':'$target_name', 'command_1':'$command_1', 'command_2':'$command_2', 'command_3':'$command_3', 'command_4':'$command_4', 'command_5':'$command_5'}"

fi


if test $environ == Online
then

for target in $(echo $server | sed "s/,/ /g")
do
sed -i "s/server_host=.*/server_host=$target/g" $msg_file/msg_sender_$compile_version/conf/msg_sender.ini
if [ -f msg_sender_$compile_version.tar ]; then rm -rf msg_sender_$compile_version.tar; fi
tar -cvf msg_sender_$version.tar msg_sender_$compile_version/

tar_name="/home/data/workspace-jenkins/deploy_msg_sender_release/msg_sender_$compile_version.tar"
command_1="echo ok"
command_2="echo ok"

command_3="cd $target_name && tar -xvf msg_sender_$compile_version.tar"
command_4="cd $target_name && ln -snf msg_sender_$compile_version msg_sender"
command_5="supervisorctl restart msg_sender"

cd /home/data/ansible/ && ansible-playbook playbook-standard.yaml --extra-vars "{'host':'$target', 'tar_name':'$tar_name', 'target_name':'$target_name', 'command_1':'$command_1', 'command_2':'$command_2', 'command_3':'$command_3', 'command_4':'$command_4', 'command_5':'$command_5'}"

done

fi
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.