当前位置 主页 > 服务器问题 > Linux/apache问题 >

    jenkins中通过Publish Over SSH插件将项目部署到远程机器上的讲

    栏目:Linux/apache问题 时间:2019-11-06 12:32

    Publish Over SSH插件使用

    在使用Publish Over SSH之前,需要制作SSH私钥。机器间做免密登录配置。假设机器A,ip为192.168.AA.AAA,机器B: 192.168.BB.BBB,机器A能够免密登录机器B,机器B能够免密登录机器A,制作方式是:

    进入A机器,执行:

    cd ~
    ssh-keygen -t rsa

    通过下面的命令,表示可以通过机器192.168.AA.AAA免密登录到机器192.168.BB.BBB

    ssh-copy-id 192.168.BB.BBB

    验证方式是:在A机器上执行ssh 192.168.BB.BBB,然后执行ifconfig检查当前的ip,若发现机器的ip已经变成了192.168.BB.BBB说明免密登录设置成功。

    进入B机器,执行:

    cd ~
    ssh-keygen -t rsa
    ssh-copy-id 192.168.AA.AAA

    验证方式是:在B机器上执行ssh 192.168.AA.AAA,然后执行ifconfig检查当前的ip,若发现机器的ip已经变成了192.168.BB.BBB说明免密登录设置成功。

    在系统配置中配置Publish Over SSH

    进入Jenkins—>系统管理—>系统设置,配置Publish over SSH

    参数说明:

    Passphrase:密码(key的密码,如果你设置了)
    Path to key:key文件(私钥)的路径
    Key:将私钥复制到这个框中
    Disable exec:禁止运行命令
    私有配置:
    SSH Server Name:标识的名字(随便你取什么)
    Hostname:需要连接ssh的主机名或ip地址(建议ip)
    Username:用户名
    Remote Directory:远程目录
    Use password authentication, or use a different key:可以替换公共配置(选中展开的就是公共配置的东西,这样做扩展性很好)
    私有配置的高级:
    Port:端口(默认22)
    Timeout (ms):超时时间(毫秒)默认即可
    Disable exec:禁止运行命令
    Test Configuration:测试连接

    对构建的项目中的SSH进行配置:

    在执行前要配合Build–>Post Steps中的Execute shell配置,执行scp命令,将要拷贝的项目先远程拷贝到远程机器上。在Execute shell中的内容如下:

    scp -r /root/.jenkins/workspace/youxuan_api_pre/qt360-web/target/youxuan_api root@192.168.BB.BBB:/usr/local/jenkinsTempFolder/
    export BUILD_ID=DONTKILLME

    点击构建的项目—>配置–>构建后操作,选择Send build artifacts over SSH,进行如下配置(注意:下面的Exec command是远程机器上执行的脚本):

    脚本内容如下:

    #!/bin/bash
    echo "==================start deploy project========================="
    ps -aux | grep /usr/local/tomcat/ | grep -v grep > tomcat_info.txt
    sed 's/ / /g' tomcat_info.txt > tomcat_info1.txt
    sed 's/ / /g' tomcat_info1.txt > tomcat_info.txt
    sed 's/ / /g' tomcat_info.txt > tomcat_info1.txt 
    cat tomcat_info1.txt | cut -d' ' -f 2 > tomcat_info.txt
    for line in `cat tomcat_info.txt`
    do
      kill -9 $line
    done
    cd /usr/local/tomcat/webapps
    rm -rf youxuan_api*
    mv /usr/local/jenkinsTempFolder/youxuan_api /usr/local/tomcat/webapps
    /etc/init.d/tomcat start
    sync
    echo 3 > /proc/sys/vm/drop_caches
    echo "==================deploy project success========================="