持续创作,加速成长!这是我参与「掘金日新计划 · 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