jenkins使用Publish Over SSH插件實現遠程自動部署

目錄web

一、安裝shell

  • 1.一、安裝插件tomcat

  • 1.二、配置bash

二、配置服務器

  • 2.一、配置jenkins支持maven自動編譯app

  • 2.二、配置文件ssh

三、發佈webapp

四、腳本maven


官方特性介紹:publish over ssh ide

  • SCP - 經過SSH發送文件(SFTP)

  • 在遠程服務器上執行命令(能夠禁用服務器配置或整個插件)

  • 使用用戶名和密碼(鍵盤交互)或公鑰認證

  • 密碼/密碼短語在配置文件和用戶界面中加密

  • SSH SFTP / SSH Exec可用做構建過程當中的構建步驟(Freestyle和Matrix項目)

  • (maven)項目構建以前的SSH,或者在構建以後運行,不管構建是否成功(請參閱下面的構建包裝器

  • 該插件是「提高意識」(直接從正在升級的版本的工件目錄發送文件),請參閱促銷

  • 能夠爲做業配置中的每一個服務器覆蓋認證憑證(或者在全局配置中未提供該服務器的狀況下提供它們)

  • 若是文件傳輸失敗,能夠選擇重試(適用於flakey鏈接)

  • 啓用命令/腳本在僞TTY中執行



一、安裝

  • 官網介紹:https://wiki.jenkins.io/display/JENKINS/Publish+Over+SSH+Plugin


  • 1.一、安裝插件

  •         點擊-系統管理-系統插件-可選插件中 直接搜 publish over ssh 點擊安裝,安裝完以後,重啓jenkins

    

  • 1.二、配置

  •         點擊- 系統管理-系統設置-拉到最下面就有這個窗口了

                image.png

    • Passphrase: 密碼(目標機器的密碼)

    • Path to key:key文件(私鑰)的路徑

    • SSH Server Name: 標識的名字(隨便你取什麼)

    • Hostname: 須要鏈接ssh的主機名或ip地址,此處填寫應用服務器IP(建議ip)

    • Username: 用戶名

    • Remote Directory: 遠程目錄(要發佈的目錄,好比/usr/local/tomcat/webapps/)


二、配置

  • 2.一、配置jenkins支持maven自動編譯

    • 連接:實例3.2:  https://blog.51cto.com/xiong51/2093450


  • 2.二、配置文件

        image.png

    Name		: 這裏是自定義的ssh遠程服務器,若是有多臺,點擊add post-build step 繼續添加
    Source files	: 源文件地址,相對地址 好比 /root/.jenkins/workspace/jobname/target/xx.war  直接寫成 target/xx.war就行
    Remove prefix	: 這裏指的是忽略前面的 target/   遠程服務器直接顯示就是xx.war
    Remote directory    : 遠程服務器要保存的文件目錄
    Exec command	: 這裏直接寫 bash 腳本名稱 xx.sh    這裏也是遠程服務器的腳本


三、發佈

        image.png

        image.png    


四、腳本

  • 我的練習使用 ,直接修改 server_name 是發佈的項目名,由tomcat定義   

              •      tomcat_m2mManger是我定義的tomcat腳本名稱,自帶的腳本 進程可能會刪除不了

              • war包地址 我定義的爲/mnt,若是是別的更改一下目錄就行

  • #!/bin/bash
    #
    # __auther__: xiong
    # __ time __: 2018年03月28日 11:00:54
    # __ 做用 __: 用於jenkins build完成以後的最後操做shell腳本
    # __ 使用 __: 定義jenkins
    #
    #---------------------------------- 文件路徑配置 ----------------------------------
    # 定義基礎路徑及目錄
    server_name=m2mManage
    
    # tomcat名稱
    tomcat_server_name=tomcat_m2mManage
    
    # tomcat 服務啓動腳本
    tomcat_serivce=/usr/local/$tomcat_server_name/sbin/$tomcat_server_name
    
    # 保存文件路徑
    base_dir=/usr/local/website
    work_dir=$base_dir/m2mManageDest
    
    # 以時間的方式來發布版本
    time=`date +%Y%m%d%H%M`
    time_dir=$work_dir/$server_name$time
    
    # 連接路徑
    link_dir=$base_dir/$server_name
    
    # 配置文件路徑
    conf_dir=WEB-INF/classes
    
    #---------------------------------- 啓動及判斷配置 ----------------------------------
    
    # 建立目錄,若是存在,直接退出從新發布一次
    if [ -d $time_dir ];then
    	exit 5
    else
    	/bin/mkdir $time_dir
    fi
    
    # 檢測這個端口判斷服務是否啓動,
    if /usr/sbin/ss -tnl | grep 這裏定義端口地址;then
            # 啓動了那就直接中止它
            $tomcat_serivce stop
    fi
    
    # 將打包上傳的文件傳到這個目錄下
    /usr/bin/unzip /mnt/$server_name/$server_name.war -d $time_dir/ &>/dev/null
    
    # 建立一個用於保存當前上線包的無效配置文件,並當無效配置文件複製到該文件中
    old_conf_dir=$time_dir/$conf_dir
    
    /bin/mkdir $old_conf_dir/old_conf
    /bin/mv -i $old_conf_dir/*.p* $old_conf_dir/old_conf/
    
    # 將上一個版本的配置文件複製到當前上線的文件中
    /bin/mv -i $link_dir/$conf_dir/*.p* $time_dir/$conf_dir
    
    # 判斷上一個版本的軟連接,用於回滾版本
    if [ -d $link_dir ];then
    	/bin/rm -irf $link_dir
    fi
    
    # 從新定義新上線包的軟連接
    /bin/ln -sv $time_dir $link_dir
    
    # 啓動服務
    $tomcat_serivce start
相關文章
相關標籤/搜索