【原創】基於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"  重啓網絡

   好了,就到這裏吧,發現什麼問題你們多多討論。

相關文章
相關標籤/搜索