Java Web项目在Linux服务器自动化部署续-整合Bamboo

前言

Java Web项目在Linux服务器自动化部署

在这一篇中, 完成的是一个自动化部署的脚本。

Atlassian Bamboo 是一款持续集成构建服务器软件(Build Server)

软件地址: https://www.atlassian.com/software/bamboo

我是在10年前就开始使用Bamboo了, 版本一直没有升级。


Bamboo本身集成的代码管控和Ant的功能, 通过配置就可以完成。



这里还是结合上一篇的脚本, 纳入到Bamboo中, 其实只是让Bamboo调用一下脚本。 或许使用Jenkins更合适 ^^


实现方式

首先说明一下,Bamboo是安装在另一台Linux的服务器, 和项目部署的服务器不在同一台。

所以要使用SSH登录到项目部署的服务器执行脚本。


在bamboo的机器中编写一个脚本实现SSH登录并执行脚本,然后在Bamboo的配置中使用Script的方式进行Build






关键问题

要实现SSH自动登录的话, 最便捷就是使用 Expect 了。

Expect是一个用来处理交互的命令。借助Expect,我们可以将交互过程写在一个脚本上,使之自动化完成。形象的说,ssh登录,ftp登录等都符合交互的定义。


我使用的bamboo脚本只能运行bash, 对于expect的运行不支持, 不知道新版是否直接可以。这样的话, 就需要做一次转化了, 通过.sh 调用 .exp

结论就是要写两个脚本, 一个 .sh;  一个.exp

脚本参考


autodeploy.sh

#!/bin/bash
cd /deploy/autodeploy/scripts
./autodeploy.exp

autodeploy.exp

#!/usr/bin/expect
set timeout -1
spawn ssh -t -t -o StrictHostKeyChecking=no root@yourIP
expect "*password:"
send "your password\r"
send "cd /usr/local/deploy\r"
send "./deploy.sh\r"
expect "*End Deploy Successful!"
send "exit 1\r"

说明:

1. -o StrictHostKeyChecking=no

如果不加的话, 每次ssh连接(或rsync)时就会有提示:The authenticity of host *** can’t be established ,需要输出一个“yes”的交互。

2. ssh -t -t

不加 -t -t 选项的话,当远程登录主机时出现Pseudo-terminal will not be allocated because stdin is not a terminal. 错误

3. 最后两句必须加上, 否则一直在ssh的登录窗口, bamboo 会一直处于运行状态。



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oscar999

送以玫瑰,手留余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值