本文是jenkins应用系统文章的一部分,大部分来自工作和学习中的实践,部分内容来自官方文档和网友的文章,引用的文章会在“參考资料”部分附上原始链接,如无意中侵犯您的权利。请联系QQ:46106962。如须要进一步的交流请添加QQ群:(Jenkins学习交流)469536515。转载和使用请注明出处。

依赖环境

  1. SSH,远程机开启SSH服务。同意Jenkins所在机器通过SSH服务登录到远程机运行脚本。能够设置SSH使用username/password或通过key登录,SSH配置请查专门的资料这里不做说明
  2. JDK,本文部署的是JAVA应用。远程机上要用jdk环境,如非Java应用请忽略
  3. Tomcat或其它web容器,本文是以Tomcat为例,将应用部署到Tomcat中运行,远程机上安装Tomcat是必须的,如非Java应用请忽略。如用其它web容器请查找容器的安装资料

插件安装

   打开Jenkins的“系统管理>管理插件”,选择“可选插件”,在输入框中输入“Publish over SSH”进行搜索,假设搜索不到能够在“已安装”里确认是否已经安装过。在搜索结果中选中“Publish
over SSH”。点击页面的“直接安装”button。系统会自己主动安装。此插件安装后不须要重新启动Jenkins。假设插件成功安装在“系统管理>系统设置”会出现相关配置项。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="Publish over SSH插件安装" align="middle" />

插件配置

全局设置

插件成功安装后使用前须要在“系统管理>系统设置”中进行配置。处如图:
每一项都能够被SSH Server的设置所覆盖,这种设计有一个优点。在server环境比較规范的情况下,能够省去每个SSH Server分别配置的繁琐步骤。

參数说明

  • Passphrase:SSH的password
    使用username/password登录时为username的password。使用私钥登录时为私钥的password。
  • Path to key:SSH私钥的文件路径
    私钥文件的路径,能够是绝对路径。也能够是相对$JENKINS_HOME的相对路径
  • Key:私钥
    私钥导出后的文本内容

    假设“Key”和“Path to key”都设置,则“Key”的优先级较高,私钥的password是“Passphrase”中设置的内容。

  • Disable exec:禁止在目标机上运行命令
    勾选后将会忽略在Job配置中“Exec command”选项中设置的命令。Jenkins的说明文档中的“The Disable exec in the advanced settings for individual configurations will be ignored.”没有全然理解。从实际效果来看,仅仅要“Disable exec”被勾选后,无论SSH Server中是否勾选“Disable exec”。Job中设置的命令都将补忽略。

Publisher defaults

SSH Server 配置

SSH Server配置为Publish Over SSH中运程机的配置,分“基本设置”和“高级设置”两部分。“基本设置”主要是运程机IP、SSHusername、SSHport、连接超时时间等。“高级设置”和大部分“全局设置”中的选项相同。

Job中使用的每个运程机都要在这里进行配置。

基本设置

SSH Server的基本设置例如以下图:
此处设置在使用“172.16.18.192-SSH”的全部设置中都生效。相当于此运程SSH节点的全局设置;基于与“全局设置”中相同的原因这里的设置在Job中也能够被覆盖,这在多用户进行远程操作时非常有必要,如在172.16.18.192这台机器上有userA和userB两个用户分别用来部署"应用A"和“应用B”。
  • 參数说明

    • Name
      SSH节点配置的名称。在Job中使用Publish over SSH插件时,此名称将出如今“SSH Server”中“Name”的下拉列表中,例如以下图:
    • Hostname
      通过SSH连接到的机器的主机名或IP
    • Username
      SSH服务使用的username,使用key进行连接时为key指定的username
    • Remote Derictory
      运程机器上真实存在的文件夹,而且“Username”指定的用户要有訪问此文件夹的权限。插件将把文件传送到此文件夹下。

高级设置

高级设置里能够设置SSHport、重试时间以及又一次设置“全局设置”中的选项。因为做用类似,不再做反复说明,设置例如以下图:

在Jenkins中配置Job

在Job设置中“添加构建步骤”里选择“Send files or execute commands over SSH”,即能够Job中使用Publish over SSH插件,配置例如以下图:
  • 參数说明

    • Name
      “系统管理>系统设置”设置的SSH Sverver的名字列表。
    • Source files
      拷贝到运程机上的文件。相对workspace的路径,也支持表达式,如上图中的“**/*.war”。
    • Remove prefix
      文件复制时要过滤的文件夹,如上图中的target文件夹。

    • Remote directory
      文件得到到远程机上的文件夹,此文件夹是相对于“SSH Server”中的“Remote directory”的。假设不存在将会自己主动创建。
  • Exec command
    在这里能够填写在运程机器上运行的脚本,如:应用部署脚本。下图中的使用shell部署应用到tomcat的演示样例:

參考资料

Jenkins——应用篇——插件使用——Publish over SSH的更多相关文章

  1. Jenkins>>>应用篇>>>插件使用>>>Publish over SSH

    依赖环境 SSH: 远程机开启SSH服务.同意Jenkins所在机器通过SSH服务登录到远程机运行脚本. 能够设置SSH使用username/password或通过key登录,SSH配置请查专门的资料 ...

  2. jenkins插件之Publish Over SSH的使用

    1,安装 在插件管理选项搜索Publish Over SSH,然后点击安装即可完成 2,安装完成之后,就可以在jenkins的配置系统中找到Publish Over SSH 配置完服务器之后,然后在项 ...

  3. Jenkins 基础篇 - 插件安装

    这一小节主要介绍 Jenkins 插件的安装,登录到 Jenkins 后,依次进入到[系统管理]→ [插件管理]→ [可选插件],在这里可以看到所有的 Jenkins 插件,如下图: 我们在最开始安装 ...

  4. 使用Publish Over SSH插件实现远程自动部署

    背景: 现场的部署环境开放外网环境困难,只有一台机器能够开发外网,应对该情况,所有的补丁文件需要直接在master机器上面生成,然后命令移动到其他的服务器上面去. 这里使用到了jenkins的Publ ...

  5. jenkins中通过Publish Over SSH将项目部署到远程机器上

    Publish Over SSH插件使用在使用Publish Over SSH之前,需要制作SSH私钥.机器间做免密登录配置.假设机器A,ip为192.168.AA.AAA,机器B: 192.168. ...

  6. jenkins插件Publish Over SSH因安全问题下架

    最近用docker新搭建了一个jenkins,安装插件的时候发现publish over ssh找不到了,官方给出的解释是存在安全隐患于2022.01.12暂停分发,官方解释如下:https://ww ...

  7. Jenkins通过Publish over SSH插件实现远程部署

    Jenkins通过Publish over SSH插件实现远程部署 步凑一.配置ssh免秘钥登录 部署详情地址:http://www.cnblogs.com/Dev0ps/p/8259099.html ...

  8. Jenkins系列-Jenkins通过Publish over SSH插件实现远程部署

    配置ssh免秘钥登录 安装Publish over SSH插件 插件使用官网:https://wiki.jenkins.io/display/JENKINS/Publish+Over+SSH+Plug ...

  9. Jenkins高级应用——Publish Over SSH插件

    在之前的篇幅中有介绍,利用jenkins结合shell脚本完成远程部署的功能,点击Jenkins结合shell+expect脚本完成线上环境自动构建部署即可查看. 上述方式需要引入expect脚本,安 ...

随机推荐

  1. OptParse选项工具模块

    OptParse是一个从Python2.3版本起引入的一个编写命令行工具模块,示例如下 ######example.py###### import optparse if __name__ == &q ...

  2. [leetcode sort]75. Sort Colors

    Given an array with n objects colored red, white or blue, sort them so that objects of the same colo ...

  3. 1023 Have Fun with Numbers (20)(20 point(s))

    problem Notice that the number 123456789 is a 9-digit number consisting exactly the numbers from 1 t ...

  4. 汉化 的 空指针 bug

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha nulljava.lang.NullPointerException at com.an ...

  5. 【UOJ #221】【NOI 2016】循环之美

    http://uoj.ac/problem/221 因为\(a\)和\(b\)不互质时,\(\frac ab=\frac{\frac a{(a,b)}}{\frac b{(a,b)}}\),所以只用求 ...

  6. Mysql的学习随笔day2

    关于输入中文的问题,各种更改完utf8后仍然乱码. 最后找到一种可行的方法:在insert之前,输入 set names 'gbk' 约束保证数据的完整性和一致性.约束分为表级约束和列级约束,前者可以 ...

  7. php curl 发送get和post请求示例

    <?php final class HttpClient { const TIME_OUT = 10; static function get($url) { $ch = curl_init() ...

  8. java泛型中的E,K,V,T,U,S

    注释: java 泛型类型使用大写形式,且比较短,这是常见的 在java库中,使用变量 E 表示集合的元素类型 K 和 V 分别表示数据库表数据的键key和值value的类型 T(如果有需要还可以使用 ...

  9. MySQL多表联查之ThinkPHP中的实现

    创建两个表如图: sp_user表: sp_dept表: 目的:通过sp_user的dept_id查询所属部门即sp_dept中的name. 原生sq方法一:select t1.*,t2.name a ...

  10. Inspect a new tab · cyrus-and/chrome-remote-interface Wiki

    Inspect a new tab · cyrus-and/chrome-remote-interface Wiki Runtime.evaluate