构建、部署到服务器并执行脚本

上一节,新建了一个job,同时配置了job的一些基本信息

当我们点击“开始构建”后,将从git仓库中将代码clone到jenkins安装目录下的workspace下

具体路径可以通过jenkins安装目录下的config.xml进行配置

这一节以一个完整的案例来讲解如何实现自动部署

1、确保构建成功

有如下几个需求:

(1). 如果我们的项目是多个项目放置在一起的,如果我只想要构建其中某个项目

(2). 多个项目同时构建

1.1. 单独构建其中某个项目

接下来进行job配置修改

(1)构建命令配置

因为我是在window下安装的jenkins,所以这里添加windows批处理命令,如果是安装在Linux中,则添加shell命令

这里如果有多个maven项目需要构建,那么需要通过&&连接多个命令执行,否则在第一个构建完成后就不会执行第二个构建了,例如

cd D:\Software\jenkins-2.150.1\workspace\gs-om-ms\gs-om-core && D:\Software\apache-maven-3.2.2\apache-maven-3.2.2\bin\mvn clean install -DskipTests && cd D:\Software\jenkins-2.150.1\workspace\gs-om-ms\gs-om-ms && D:\Software\apache-maven-3.2.2\apache-maven-3.2.2\bin\mvn clean package spring-boot:repackage -DskipTests

如果不通过&&,则只会构建gs-om-core项目

这里做了两件事:

(a)进入需要构建的项目目录下

(b)执行构建命令,这里用本地安装的maven,同时使用springboot的打包插件进行打包,同时跳过测试用例(实际不应该跳过)

springboot打包插件需要在pom.xml中配置springboot插件

<plugin>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-maven-plugin</artifactId>
       <version>1.5.4.RELEASE</version>
</plugin>

(2)SSH传输配置

source files:配置要传输的源文件,这里是一个相对路径,相对当前job工作目录而言,即前面提到的代码的workspace。这里配置了工作目录下gs-om-ms/target的jar文件,因为我只需要对gs-om-ms进行构建,所以只传输这部分jar文件就行

remove prefix: 移除指定源文件的前缀,这里移除gs-om-ms/target,这里的话只会保留具体的文件,没有路径信息

remote directory:这个我们在SSH Server的时候配置了,也可以在这里配置

exec command: 在远程服务器中执行的命令,我们在服务器的/usr/local/www/gs/gs-om-ms/目录下新建了reload.sh脚本,这个脚本就是为了重新部署的,后面会讲到

1.2 多个项目构建,类似单项目构建,无非就是本地构建命令放置在这里执行,确保在本地测试通过

2、自动部署脚本编写

因为我们这里使用的用户是jenkins,权限比较少,所以类似于kill这种命令就无法执行,所以这里简单做法是:将jenkins设置成可以执行任何脚本且sudo时不需要密码

在/etc/sudoers文件中

root    ALL=(ALL)  ALL

下方添加

jenkins  ALL=(ALL)   NOPASSWD:ALL

这样用户在执行sudo -s时不需要输入密码就能切换到root账号

有了权限后,我们就可以开始编写reload.sh脚本了

#!/bin/bash
cur_dateTime="`date +%Y-%m-%d-%H%m%s`"
#切换用户到root
sudo -s<<EOF

#使path生效后才能使用dzy命令
source /etc/profile

#关闭已启动的系统
dzy stop gs-om-ms

#将原先的jar备份
mv /usr/local/www/gs/gs-om-ms/target/gs-om-ms.jar /usr/local/www/gs/gs-om-ms/target/gs-om-ms-${cur_dateTime}.jar

#将新构建的jar重命名为运行命令需要的jar
mv /usr/local/www/gs/gs-om-ms/target/gs-om-ms-1.0-SNAPSHOT.jar /usr/local/www/gs/gs-om-ms/target/gs-om-ms.jar

#启动系统
dzy start gs-om-ms dev

echo "jenkins自动部署成功"
exit 0
EOF

有了以上步骤后,我就可以开始构建了

从构建输出可以看出:先从远程仓库中pull代码到本地种,然后执行我们编写的windows批处理命令

构建成功后:

构建成功后,文件已经上传到服务器中了,同时执行我们编写的shell命令

3、问题

(1)本来是想直接使用root账号来执行脚本的,这样就不需要切换到root账户,但是使用root账号,SSH Server一直连接不上,所以后面只能使用sudo -s<<EOF切换到root用户

(2)构建过程中有些jar找不到,就需要考虑settings.xml配置文件的正确性以及已经下载的jar是否有问题

(3)自定义的脚本添加到/ect/profile中,但是并没有生效,得通过source /etc/profile使其生效才能执行自定义的命令(dzy),否则会出现命令找不到的问题

4、总结

(1)本地确保构建成功后,配置相应构建命令;

(2)编写运维脚本(这里为部署脚本,根据自己项目规则来定)

(3)配置jar传输完成后执行的脚本

 

本人开发的一个网站:编程之道,欢迎来踩!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

来了就走下去

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值