前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Jenkins结合shell+expect脚本完成线上环境自动构建部署

Jenkins结合shell+expect脚本完成线上环境自动构建部署

作者头像
MavenTalker
发布2023-03-10 20:50:35
6450
发布2023-03-10 20:50:35
举报
文章被收录于专栏:歪脖贰点零歪脖贰点零

如果jenkins部署在内网,而生产环境存在DMZ区的话,此方式就不太适合了,需要考虑其它方式来部署升级。

由于jenkins部署在内网,生产环境在公网,所以中间需要一个安装包转移的过程,将内网的安装包copy到远程公网对应位置,可采用scp命令,同样也可以采用上传到远程服务器,在公网服务器上get下来,笔者采用是scp的方式。

采用scp存在一个问题,此命令会与人产生交互,无法在shell中自动完成,此时需要借助另外一个工具expect(Tcl语言的另一个衍生版),上篇文章已经介绍到【如何编写无须人工干预的shell脚本

脚本如下:

代码语言:javascript
复制
#!/usr/local/bin/expect
set timeout 30
set password xxxxxx
spawn scp -P 10010 /usr/local/src/portal.war root@218.76.43.83:/home/server/apache-tomcat-7.0.70/webapps
 expect {
 "(yes/no)?"
  {
  send "yes\n"
  expect "*assword:" { send "$password\n"}
 }
 "*assword:"
{
 send "$password\n"
}
}
expect "100%"
expect eof
spawn ssh -l root 118.36.23.113 -p 10000 #远程登陆
expect "*assword:" { send "$password\n"}
expect "*#"
send "echo get into directory\r"
expect "*#"
send "cd /home/shell\r"#存放脚本的目录
expect "*#"
send "sh server-restart.sh \r" #远程的启动脚本
expect "*#"
#send "exit\r" -- 希望执行完sh脚本,退出远程服务。这么做导致war包部署时异常,这里要注释掉,统一交由jenkins的job来终结
expect "100%"
expect eof
interact

server-restart.sh脚本内部就如之前一篇《利用jenkins实现自动构建、部署,提升团队开发效率》中有提到,内容类似,这里不再赘述。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-11-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 MavenTalk 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档