先说一下这篇文章的思路:我准备了两台Linux 机器,
- 机器1: IP 192.168.3.51 这台机器上运行着Jenkins
- 机器2: IP 192.168.3.50 这台机器上有Tomcat
我们需要实现的功能是,在192.168.3.51 这台机器的Jenkins 点击构建之后:
- 拉取最新的代码
- 编译成war 包
- 把war包推到192.168.3.50这台机器上
- 在192.168.3.50这台机器上执行命令,重启Tomcat
经过这些步骤之后,就成功部署了。关于前两步,编译代码可以看另外一篇博客Jenkins 自动化编译项目
1.安装Publish Over SSH插件
因为我们需要把文件推到其他机器上,还要执行其他的命令。所以我们这里需要安装 Publish Over SSH这个插件
安装完成之后,还需要在系统管理-系统设置- Publish over SSH中配置,这里一定要注意Remote Directory 配置的目录,所有推到这台机器的文件,都只能保存到这个目录下面。最好不要配置 "/"。
在配置下面,有一个Test Configuration按钮,点击这个按钮就可以测试配置是否成功。点击之后出现Success就说明配置成功了
2.新建任务
为了方便,我们这里选择构建一个自由风格的软件项目。新建任务之后,将会自动在Jenkins 工作目录中新建一个任务名称的文件夹,这个任务的相关文件,都会存在这个目录下。
Jenkins工作目录: 登陆用户目录/.jenkins/
我的任务目录是:/root/.jenkins/workspace/AutoBind,这个目录也称为工作空间
3.配置拉取代码方式
因为我这里是配置了公钥到码云的账号,所以我这里拉取代码是不需要密码的。这个密码视情况而定,没有密码可以不输入。不要照着我这个地址输入,我这个就是普通的java Web项目,自己创建一个就好了。
4. 配置编译
选择配置好的Maven版本,配置Maven 命令。这样就可以自动编译了。
5.配置推送文件到远程机器,并执行命令
增加操作后构建步骤,选择Send build artifacts over SSH
Source files:源文件,这里要配置的是要推到目标机器上的文件。经过我的测试,这里只能是工作空间的下的目录,写相对路径也是没有用的。
Remove prefix:要过滤的路径,比如war 的目录是/target/AutoBind.war。如果不配置这个,那么推到目标机器上之后,它会在你配置的目录下。自动创建target 目录
Remote directory:推到目标机器上的路径。这个路径是在 Remote Directory 路径下的
Exec command:在目标机器上执行的命令。可以执行Shell脚本,这里可以做很多事情。我只是写了几行最简单的命令
6.验证构建结果
查看日志,可以看到成功推了一个文件。并且构建成功,现在可以打开Tomcat查看效果了。在Tomcat的webapps 下也可以看到推过去的war包
问题1:
如果这里显示Transferred 0 file(s),就说明Source files这个路径配置的有问题
问题2:
显示Transferred 1 file(s),但是找不到文件。这个时候可以在目标机器上 cd Remote Directory目录,然后在cd Source files目录就可以找到了