[原]基于Telnet协议的Jenkins远程部署

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

  当然,你也可以为你的目标机器安装SSH服务。

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

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

  具体步骤:

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

  

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

  

  (3) FTP上传

  

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

 (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"  重启网络

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

  

时间: 2024-08-26 12:09:52

[原]基于Telnet协议的Jenkins远程部署的相关文章

【Telnet】使用Telnet协议连接到远程Shell执行脚本

介绍 本文介绍如何通过Telnet协议连接到远程Shell,执行脚本,并获取执行结果: 相关文章: <[Jsch]使用SSH协议连接到远程Shell执行脚本>http://www.cnblogs.com/ssslinppp/p/6244653.html 其他示例: http://commons.apache.org/proper/commons-net/examples/telnet/TelnetClientExample.java http://www.programcreek.com/ja

使用Jenkins远程部署war包到tomcat container

Jenkins首先使用maven将源代码进行编译打包,之后需要将war包传送到tomcat服务器上进行部署. 来看一下Jenkins的基本配置,首先需要安装插件"Deploy to container Plugin": 但是在安装插件时,Jenkins会先ping www.google.com这个域名来保证网络连通性 ,我们需要将其改为www.baidu.com,来使得检查阶段通过: 编辑Jenkins的配置文件default.json: 将connnectionCheckUrl改为h

基于http协议实现RPC远程调用

今天简单说一下基本Http协议来实现RPC框架~ 基于Http协议实现RPC框架: 优点: 1.简单.实用.开发方便 缺点: 1.性能不是很稳定,在海量数据时,完全顶不住,容易宕机 2.因为不是走的注册中心,不便于维护.监控以及统计分析 但是对于大多数公司而言,不会又像淘宝.京东那样大的数据量,所以基于Http协议的RPC,实现多个系统间的解耦,还是很实用的~ 下面,我们进入正题,通过Java实现简单的RPC调用 一.maven 引入第三方jar包(不是maven项目,可以自己去网上下载一个对应

Linux配置AndroidSDK&amp;Jenkins远程部署

最近将公司的项目部署了Jenkins持续集成,遇到了几个麻烦的点,其中之一就是将Android SDK进行配置在远程服务器(总结下来还是自己对Linux命令还不够熟悉),特此记录. 系统: Ubuntu Server 16.04.1 LTS 64位 前置:完成JDK的环境搭建 1.下载SDK 点击进入下载网址 下载对应的 android-sdk_r24.4.1-linux.tgz 文件. 2.解压下载的压缩包 tar -zxvf android-sdk_r24.4.1-linux.tgz 3.安

jenkins(六)---jenkins远程部署脚本

/** * lihaibo * 文章内容都是根据自己工作情况实践得出. *未经作者同意,禁止转载 */ 在远程主机上创建一个shell脚本放置在自定义路径中:这里我放置在/opt下面:取名叫auto_deploy.sh 即:auto_deploy.sh在远程主机上什么位置,上图中的 Exec command 中就要写到哪个位置. shell脚本怎么写可以自己定义:这里分享下自己写的脚本,以供参考: #!/bin/bash #Time log_time=`date +[%Y-%m-%d]%H:%M

jenkins 远程部署失败 控制台部署成功

注意查看环境变量的设置,设置~.bashrc中的环境变量 linux 编写注意规范

如何在Windows系统上利用Telnet协议连接Linux服务器

Telnet协议是Internet远程登录服务的标准协议,它为用户提供了在本地计算机上完成远程主机工作的能力.很多终端使用者都习惯在计算机上利用Telnet会话来远程控制服务器.这里小编就分两步为大家演示如何在Windows系统上利用Telnet协议连接Linux服务器. 步骤一:在Windows系统上打开Telnet功能:  步骤二:在Linux系统上启用Telnet服务. 步骤一:Windows终端开启Telnet功能 1/由于在Windows Vista之后的版本默认并没有提供Telnet

SSH协议 和 Telnet协议远程登录

Telnet Telnet是什么协议? Telnet服务器软件是我们最常用的远程登录服务器软件,是一种典型的客户机/服务器模型的服务,它应用Telnet协议来工作.那么,什么是Telnet协议?它都具备哪些特点呢? Telnet是位于OSI模型的第7层---应用层上的一种协议,是一个通过创建虚拟终端提供连接到远程主机终端仿 真的TCP/IP协议.就是说他是一种基于TCP的应用层协议.这一协议需要通过用户名和口令进行认证,是Internet远程登陆服务的标准协议.应用 Telnet协议能够把本地用

Ganymed SSH2 模拟类似FileZilla远程传输文件(基于SCP协议)

Ganymed SSH2 模拟类似FileZilla远程传输文件(基于SCP协议) 为了传输文件或者目录,我们使用 Ganymed SSH2中的SCPClient类,这个类实现了scp命令功能. 下面的代码包含了传输单个文件和传输目录的功能: package com.doctor.ganymed_ssh2; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io