jenkins 是一个提高敏捷开发效率的工具。
实践过程中,将项目的脚本化构建用 shell 编写成命令脚本,并附加在项目中,即使不使用 Jenkins,通过执行 shell 脚本也能够实现项目的自动化构建。这么做主要有如下考虑:
增强拓展性
即使没有 Jenkins,项目也能完成构建,增加构建的拓展性
减少对 Jenkins 的依赖
让 Jenkins 承担实践调度的角色,具体构建过程由标准化的脚本来完成。
既然 shell 脚本能够完成自动化构建,那么还需要用到 Jenkins 吗,是否冲突?答案是不冲突。shell 脚本配合 Jenkins 使用有两大方面优势:
使用 shell 脚本必须登录目标服务器,拥有相应的权限后,方能执行 shell 脚本,Jenkins 能够实现在不登录目标服务器的基础上,使用一对账号和密码,管理可视化的 Web 操作界面触发构建事件。
按需构建,开发者在提交完代码后,向 Jenkins 服务器发送一个信号,便可触发构建。
编写自动构建脚本的流程
平常使用写的自动构建的maven服务的脚本,做一个模板记录。
确定构建目录——更新依赖打包成功——进入工作目录,按时间备份之前的包体——新包移动替换到新的工作目录——找到已经启动的进程并杀死——启动新包
如果有使用守护进程的话,可以省略一步启动新包
后台启动 使用nohup command > output.log 2>&1 & 可以减轻日志压力,不会生成详细的nohup.out文件。
jenkins与工作目录不在同一服务器上时,需要配置密钥并传输到对应的服务器上。
下面是之前使用过的版本,有待改进(XD)
#!/bin/bash
deplay_path=/usr/local/
time_now=`date +'%Y%m%d%H%M%S'`
work_path=`pwd`
echo "***************start auto deploy script********************"
echo "work path: ${work_path}"
cd