【原创】基于Telnet协议的Jenkins远程部署

  最近奉命研究Jenkins的自动远程部署,刚开始进行还算顺利。可是,紧接着问题就来了,咱们要部署的目标机器是Telnet协议的。而接触过jenkins的都知道,全部的插件里面只有用于本地部署的和基于SSH协议远程部署的,并无一个是基于Telnet协议的。那么这该怎么解决呢?linux

  固然,你也能够为你的目标机器安装SSH服务。shell

  我先说说解决的思路,而后再附上具体的步骤和shell脚本。服务器

  思路:将jenkins安装在linux系统上 --->  SVN check out 部署的项目  --->  maven插件编译、打包  --->  使用jenkins的FTP插件将须要部署的项目或打成的包上传到指定的机器  --->  执行shell脚本登陆该机器进行解压、部署、启动等操做(也能够直接执行写好的shell)。网络

  具体步骤:app

  (1)  源码管理,填写相应的项目SVN地址以及用户名密码maven

  

  (2)配置maven build ,maven插件的配置在系统设置里面设置。ide

  

  (3) FTP上传ui

  

  这里的Source files是jenkins的workspace的相对路径,Remove prefix为取消的前缀(只保留项目名称部分)。spa

 (4) 构建时执行脚本插件

  

  这是Telnet远程登陆的脚本

#!/usr/bin/env sh
USERNAME=swdev         # 登陆用户名
PASSWARD=swdev         # 登陆密码
TAR=icore-business-ecif-biz-0.0.1-SNAPSHOT-unix.tar.gz   #TAR是上传的压缩包的名字
MODEL=provider         # MODEL是压缩包根目录的名字和启动的二进制程序名同样
DEPLOY_DIR=ecif         # DEPLOY_IP是上传文件所在的目录
REMOTE_IP=192.168.2.3     # 登陆IP
(sleep 1;echo "$USERNAME";\
 sleep 1;echo "$PASSWARD";\
 sleep 1;echo "cd \$HOME/$DEPLOY_DIR";\
 sleep 1;echo "chmod +x ./deploy";\
 sleep 1;echo "nohup ./deploy $TAR $MODEL 2>&1 > deploy.log&";\
 sleep 10)|telnet $REMOTE_IP
 exit 0

 

  (5) 构建后执行脚本deploy.sh(主要用于解压、部署、启动等操做,这个放在上传文件所在的目录中)

#!/usr/bin/env sh
#
# $1 tar.gz name
# $2 provider source folder name
#
set -e
log_message () {
  echo "[$(date +%Y%m%d-%H:%M:%S)] $1"
}
BASDIR=$(dirname $0)
if [ $# -lt 2 ]; then
  log_message "Usage : $(basename $0) [tar name] [provider name]"
  exit 1
fi

# Stop previous version and backup, then remove previous package
CMD="$BASDIR/$2/bin/$2"
if [ -e "$2" ]; then
  $CMD stop
  backup="${2}-$(date +%Y%m%d%H%M%S)"
  log_message "Back up previous application to ${backup}.tar.gz"
  tar -cvf $backup.tar $2
  gzip ${backup}.tar
  rm -rf $2
fi

log_message "Extract package begin"
gunzip -c $1|tar -xvf -
# Generate log directory
mkdir -p $BASDIR/$2/logs
log_message "Starting application"
$CMD start

  这个脚本只是一个示例,须要根据具体业务具体而定。

  最后呢,遇到的几个比较坑的地方拿出来与你们分享下:

  Failed to parse POMs.

  

  缘由:本地服务器和maven服务器之间的链接出现了问题,致使jar包没法下载而报错

  解决方法:

  vi  /etc/hosts

  在文件末尾加上你所使用的私服地址  如:"192.168.1.1 www.nexus.xxx.com"

  运行 "#/etc/init.d/networking   restart"  重启网络

   好了,就到这里吧,发现什么问题你们多多讨论。

相关文章
相关标签/搜索