jenkins自动化部署

 

图例说明:

  1. coder提交代码到gitlab
  2. jenkins拉取代码到jenkins服务器workspace下:

 3 . 同时也把脚本拉取到jenkins服务器内

 

 

4.  jenkins自动执行jenkins_shell.sh代码

jenkins_shell.sh执行mvn

 5 编译结束  调用deploy  传输jar与remote_run.sh脚本

 

目录

1  jenkins新建空项目项目配置

 2 配置脚本

jenkins_shell.sh

 deploy.sh

remote_run.sh

3 提交代码,触发执行


1  jenkins新建空项目项目配置

 

 注意:结尾 echo 0  要添加    ;否则会卡住像console阻塞一样,不信就试试

 2 配置脚本

注意jenkins机器需要支持:

SSH 远程登录remote部署机器

expect命令环境 

apt-get install expect

jenkins_shell.sh

主线脚本:1 打包  2复制  3调用子脚本

#!/bin/bash
##自动部署在jenkins server 然后调用deploy进行ssh传输命令
################################################
#mvn打包 test
mvn clean package -Dmaven.test.skip=true -Ptest
#mvn clean package -Dmaven.test.skip=true -Pprod
################################################
#复制导出目录
mkdir -p export/test/
cp target/sso-0.0.1-SNAPSHOT.jar export/test/
################################################
#执行ssh exper 用来scp传文件
# 1注意不能用sh deploy.sh
# 2其他项目注意修改此处的包目录结构
chmod 777 deploy.sh
./deploy.sh 10.199.203.143 appuser slkwanda1A! export/test/sso-0.0.1-SNAPSHOT.jar remote_run.sh /home/appuser/mysever
################################################
#
echo 0


 deploy.sh

1 迁移脚本与包 scp

2 登录 ssh

3发送shell执行命令到对端 ssh

#!/usr/bin/expect
#  需要安装expect ssh : apt-get install expect
# 注意其他工程  替换部署目标机器包名 /home/appuser/mysever/sso-0.0.1-SNAPSHOT.jar
set timeout -1
set host [lindex $argv 0]
set username [lindex $argv 1]
set password [lindex $argv 2]
set src_file [lindex $argv 3]
set src_file2 [lindex $argv 4]
set dest_file [lindex $argv 5]

set port 22
spawn scp $src_file $src_file2 $username@$host:$dest_file
expect {
"(yes/no)?"
{
  send "yes\n"
  expect "*assword:" { send "$password\n"}
}
 "*assword:"
{
 send "$password\n"
}
}
expect "100%"
expect eof
spawn ssh -4 -D $port $username@$host "sudo chmod 777 /home/appuser/mysever/*"
expect "*password:*"
send "$password\r"
expect "100%"
spawn ssh -4 -D $port $username@$host "/home/appuser/mysever/remote_run.sh restart"
expect "*password:*"
send "$password\r"
expect eof

remote_run.sh

#!/bin/bash -l
app_name=sso-0.0.1-SNAPSHOT.jar
absolute_app_name=/home/appuser/mysever/$app_name
ProcNumber=`ps -ef |grep -w $app_name|grep -v grep|wc -l`
if [ $1 == "start" ]
  then
  echo "-----do start service -----"
  nohup java -jar $absolute_app_name >log.log 2>&1 &
  exit -1
  elif [ $1 == "starts" ]
  then
  echo "-------do start service shortly -----"
  java -jar $absolute_app_name
  elif [ $1 == "stop" ]
  then
  echo "-------do stop service -----"
  ps -ef | grep $app_name | grep -v grep | awk '{print $2}' | xargs kill -9
  elif [ $1 == "restart" ]
  then
  if [ $ProcNumber -le 0 ];then
  echo "-------service null, should't have to kill,strictly start... -----"
  nohup java -jar $absolute_app_name > log.log 2>&1 &
  exit 0
  fi
  echo "-------do stop and restart service -----"
  ps -ef | grep $app_name | grep -v grep | awk '{print $2}' | xargs kill -9
  nohup java -jar /home/appuser/mysever/$app_name  >log.log 2>&1 &
  exit 0
  else
  echo "Please make sure the positon variable is start starts restart or stop...."
fi
exit 0
#>/dev/null 2>&1 &
#>/dev/null 2>/dev/null &
#>log.log 2>&1 &

3 提交代码,触发执行

当然也可以进行其他代码审核,代码触发的策略,本说明仅仅演示jenkins打版本部署运行

 

remote_run.sh

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值