一、前言

Publish Over SSH插件是jenkins里面必不可少的插件之一,主要的功能有两个

  1. 把jenkins服务器上的文件,传输到远程tomcat服务器的指定目录。
  2. 远程执行shell命令和脚本。

安装步骤:
系统管理→管理插件→可选插件→Artifact Uploaders→Publish Over SSH

二、功能说明

2.1 基础功能

  1. 文件传输功能可以把jenkins打包好的war包传输到tomcat服务器的webapps目录下,实现了war包的传输。
  2. 远程执行命令功能可以实现,对远程tomcat服务器的启动,关闭,以及war包的备份等。
    通过以上两个功能就可以实现对打包好的war包的分发和发布。

2.2 引申功能

  1. 每次发布时传送配置文件,或者将发布的war包备份到指定目录(按日期生成)。
  2. 执行远程命令,实现关闭负载均衡器,打印执行结果,打印启动日志,等。

最终目的是,可以通过jenkins控制台的log监控整个发布流程,不需要在登陆服务器查看。

三、插件使用

3.1 环境配置

系统配置–Publish over SSH

  • 配置远程tomcat服务器的ip,登录用户名和密码
  • Remote Directory 远程工作目录,非常重要,和文件传输关系很大,后面会说明
    配置好后,test configuration如果返回成功,就证明你可以ssh到远程主机
    在这里插入图片描述

3.2 文件传输的说明

source相对路径问题,不是.Jenkins/workspace,而是.jenkins/workspace/[project]/\

  1. 如何确定服务器上的相对路径? jenkins主目录+workspace+jenkins页面创建的任务名(可以在workspace目录下找到)

/var/lib/jenkins/workspace/jenkins item name
示例:
如果 /var/lib/jenkins/workspace/jenkins item name/admin/target/bian.war的话
在下图的1中只要填写 /admin/target/bian.war就可以找到。**/war包 可以匹配,但是不精确。

  1. 去前缀
    如果不去前缀,上图的例子会在远程目录基础上生成如下目录
    admin/target/bian.war
    而我们想要的只有war包,所以通过remove prefix 可以把admin/target去掉,只生成bian.war包文件。
  2. 远程目录
    这里我给出一个较复杂的例子,因为带日期的自动生成。需要先勾选下面的checkbox。
    • 在3.1环境配置中我们配置过remote directory /home/bian/jenkinsfiles 这就是远程根目录。需要在远程服务器创建该目录
    • 下图中3指的是根目录基础上创建的目录。
      示例中配置意思是每次生成 /home/bian/jenkinsfiles/warbackup/2019-06-18_时分秒文件夹,并把bian.war存放到日期文件夹中。
      在这里插入图片描述

3.3 远程执行命令的说明

这个比较简单,很少有人遇到很大门槛,顶多是命令执行过程中的报错。

  1. 命令行和文件传输要求至少有一个,要不这个模块就没意义
  2. 如果出错时想中断后面的执行,可以加上exit=-1。jenkins如果发现命令执行返回值不等于0,则不会继续执行后续发布操作。

Publish Over SSH比较好的博客:
https://www.cnblogs.com/zz0412/p/jenkins_jj_10.html

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐