• Jenkins使用Publish Over SSH插件实现部署


    介绍

    这个插件可以通过ssh连接其他服务器。

    1、安装插件

    在jenkins应用商店中下载Publish Over SSH插件,离线环境请手动上传jenkins插件文件夹

    2、生成 SSH 秘钥

    在配置Publish over SSH中使用明文也可以

    生成 SSH 秘钥,并将公钥发布到各服务器
    登录 jenkins 服务器,执行 “ssh-keygen”:

    秘钥生成存放的路径,默认/root/.ssh/id_rsa, 还有让你设置一个 “passphrase”密码,可以不加密码直接回车。
    在这里我设置了密码,比如 “ixiao9”。
    生成成功后,进入到/root/.ssh 目录下查看秘钥文件:

    将公钥发到要远程的各服务器上,执行 “ssh-copy-id root@192.168.X.X”, root 是远程服务器的登录名,@ 后面是目标服务器 IP。

    可以用 “ssh root@192.168.X.X”,验证下是否成功,无需输入密码登录到192.168.X.X即可。
    一般会有多台服务器,同样的方式操作就行。

    3、配置Publish over SSH

    在 jenkins 的 “Configure System”(系统配置)中拉到最下面,找到 “Publish over SSH” 添加要远程的服务器,并进行配置。、

    Passphrase:密码(输入刚刚的ixiao9)
    Path to key:key文件(私钥)的路径
    Key:将私钥复制到这个框中
    Disable exec:禁止运行命令

    4、SSH Server 配置

    添加被操作的节点

    完成配置后,点击下方的 “Test configuration”,如果出现 “success” 说明通了。

    5、在项目中配置

    在项目配置中,可以从下面三个地方找到此插件的配置。
    选择一个自由风格项目
    构建环境: Send files or execute commands over SSH before the build starts
    和Send files or execute commands over SSH after the build runs


    SSH  Server Name:选个一个你在系统设置里配置的名字

    Source files:本机的文件

    Remove prefix:移除目录(只能指定Transfer Set Source files中的目录)

    Remote directory:文件远程目录

    Exec command:远程执行命令

    6、注意

    Source files部分

    注意Source files部分

    此图片来自:https://tendcode.com/article/Publish-Over-SSH/

    超时问题

    Exec timed out or was interrupted after 120,00ms
    


    一般是因为网络问题,或jenkins节点ssh访问指定服务器错误。
    还有一种是shell命令执行过久,导致超时。
    修改默认时间。
    首先找到你需要修改的项目——》下拉到ssh Publishers ——》Transfers ——》右下角选择高级

    修改Exec timeout(ms)部分即可。

    远程执行脚本超时

    Exec exit status not zero. Status[xx]
    


    这种情况是脚本执行过久没有结束Publish Over SSH等待将结果返回jenkins,超过了上面设置最大时间。
    查看下面这张图Exec command部分

    tar xf /home/mp-portal.tar.gz -C /home
    cd /home/portal/bin/ && sh run.sh start
    

    问题出现在sh run.sh start中
    run.sh脚本上。

    看下run.sh脚本

    脚本最后一句前台滚动查看日志没有结束,Publish Over SSH等待run.sh脚本执行完毕将结果返回jenkins,超过了上面设置最大时间。
    修改run.sh脚本即可

  • 相关阅读:
    简明python教程 --C++程序员的视角(九):函数式编程、特殊类方法、测试及其他
    "听话"的品格的症状
    PHP中extract()函数的妙用
    分析源码的感悟
    JWT 多网站单点登录,放弃session
    How to use php serialize() and unserialize()
    [转]很好的文章,收藏一下
    Learning from the CakePHP source code
    Learning from the CakePHP source code
    关于PHP的一小段代码求解如下求解"%2$s"
  • 原文地址:https://www.cnblogs.com/iXiAo9/p/16282260.html
Copyright © 2020-2023  润新知