Jenkins插件-Publish over SSH

520 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第29天,点击查看活动详情

Jenkins

Jenkins是目前最流行开源的持续集成工具,主要负责代码构建。插件市场中还有很多辅助构建的工具。

Publish over SSH介绍

Jenkins发布插件,Jenkins本身是支持在各个环节执行命令行命令的,这个插件把这些过程变为配置页面还是很方便的,支持通过ssh将文件发送至远端服务器,在远端服务器执行自定义命令,可在maven构建前,构建后执行。

配置

全局配置

目录: Dashboard-configuration-Publish over SSH-SSH Servers

说明: 配置远端服务器,支持多个服务器, SSH Server:配置服务器别名,ip,用户名密码等信息,

 

Remote Directory:远端工作目录,拷贝文件会以此目录为工作空间根目录

项目配置

位置: Build新增Send files or execute commands over SSH,增加在maven构建之后,当然也可以放在前面执行。

说明:

  • SSH Server-Name:全局配置中配置的远端服务器下拉选择
  • Source files:需要发送到远端的文件,相对路径,基于当前项目在Jenkins的工作空间,
  • Remove prefix:拷贝至服务器后需删除的前缀
  • Remote directory:相对路径远端服务存储的文件目录,基于全局配置中的Remote Directory
  • Exec command:传输完成之后执行的命令,可进行文件备份,服务重启等操作

点击"Advanced"按钮勾选"Verbose output in console"可将命令执行结果返回至Jenkins便于调试,支持输出命令,对于一开始环境调试还是很方便的。

下面是自己用的命令,仅供参考,命令作用是备份文件,重启服务,重启服务的脚本在服务器上已经写好这里只是执行该脚本

#!/bin/bash
baseDir="/home/workspace/xxxProject/"
deployDir=$baseDir"lib/"
historyDir=$baseDir"history/"
binDir=$baseDir"bin/"

jarName="xxxProject.jar"
jarName_prefix="xxxProject"
jarName_suffix=".jar"

dateStr=`date +%s`
echo $dateStr

copyFileName=$jarName_prefix$dateStr$jarName_suffix
echo $copyFileName

cp -i $deployDir$jarName $historyDir$copyFileName
echo "Backup complete"

mv -f $historyDir$jarName $deployDir$jarName

cd $binDir
./xxxProject restart

另外还有基于CIFS协议/FTP协议的插件版本,基本覆盖了绝大部分场景。