一、敏捷开发与持续集成
1)什么是敏捷开发
敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
2) 什么是持续集成
因为开发部门同时维护多个版本,多个版本的发布,测试需要大量人力,所以要有一个专业的持续集成工具来管理持续重复的工作。
二、持续集成工具
1)Jenkins 和Hudson
- Jenkins是一个持续集成(CI)工具。它可以持续编译,运行你的代码;运行单元测试(UT)或集成测试;将运行结果发送至邮件,或展示成报告。
- Jenkins起源于Hudson。Hudson在商业软件的路上继续前行,而Jenkins则作为开源软件,从hudson分支出来。
因此现在的jenkins和hudson非常类似,但是随着二者各自的发展,已经有了一些不同。
2)技术组合
Jenkins 可以整合 GitHub 或 Subversion Husband 也可以整合 GitHub 或 Subversion二者既然是同源的工具软件,操作和指导思想就是接近的
3)部署方式对比
JavaEE项目部署方式对比
①手动部署
自动化部署
“自动化”的具体体现:向版本库提交新的代码后,应用服务器上自动部署,用户或测试人员使用的马上就是最新的应用程序。
三、安装Jenkins
1)下载Jenkins.war文件
下载地址:
2)开启Jenkins
①将下载的war文件传到Linux中的Tomcat目录中的webapps中,
② 浏览器地址栏访问 IP地址:端口号/jenkins
输入管理员密码,密码文件所在位置见图所提示
在Linux系统中打开该文件夹就可以查看密码
输入密码后出现以下提示
可以点击安装推荐插件,
也可以自定义安装;缺少的插件以后也可以安装
插件下载中
插件下载完成后,需要创建一个管理员用户
如果插件安装失败,可以升级站点
http://mirror.xmission.com/jenkins/updates/current/update-center.json
四、使用Jenkins部署项目
1)准备Linux的环境搭建
①安装jdk,配置环境变量
②安装Tomcat,配置环境变量
③安装git
首先安装依赖环境
yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel yum install -y gcc perl-ExtUtils-MakeMaker
删除已有的git
yum -y remove git
将git的tar文件传到Linux中,并解压
tar -zxvf git-2.9.3.tar.gz
编译
# 进入解压的文件目录
cd git-2.9.3
# 编译,指定前缀
make prefix=/usr/java/git all
# 安装
make prefix=/usr/java/git install
配置环境变量
export GIT_HOME=/usr/java/git
export PATH=$GIT_HOME/bin:$PATH
使配置文件生效
source /etc/profile
查看git版本
git --version
④安装maven,配置环境变量
2)使用Jenkins
① 安全管理器
② 全局配置
安装jdk
配置maven的环境
配置maven的settings.xml
配置git
首先在Linux中查看git的路径
whereis git
将路径填入path中
③创建任务
若刚一开始没有下载maven插件的,需要先下载maven插件
创建一个maven项目
构建项目的git配置
首先在Linux中执行以下命令,目的是为了让本地机器ssh登录远程机器上的Gitee账户无需输入密码
# 输入自己gitee绑定的邮箱
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
clean package -U -Dmaven.test.skip=true
框内填入下列内容
BUILD_ID=DONTKILLME
echo "部署的目录和项目名称"
sh /usr/java/test/build.sh
echo "success"
先创建文件,稍后应用启动
创建对应的build.sh
文件存放在Linux系统的/usr/java/test文件下
#! /bin/bash
echo "部署的目录和项目名称"
DIR="/project"
projectName="demo"
echo "待部署的应用服务器"
server_ips="192.168.159.34"
#所有的参数列表
for server_ip in ${server_ips[@]}
do
echo "进行备份操作"
mkdir -p $DIR/backup/${projectName}
if [ -f "$DIR/${projectName}/${projectName}.jar" ];then
mv $DIR/${projectName}/${projectName}.jar $DIR/backup/${projectName}/${projectName}-`date "+%Y%m%d_%H%M%S"`.jar
fi
echo "拷贝jar包到目标服务器的目录下"
cp ${WORKSPACE}/target/*.jar /usr/java/test/demo.jar
echo "连接进行发布操作"
#mv /usr/java/test/demo.jar $DIR/backup/${projectName}/${projectName}.jar
echo "开始关闭jar"
sh /usr/java/test/shstopspringboot.sh
sleep 5s
echo "启动jar"
sh /usr/java/test/shspringboot.sh
done
创建shstopspringboot.sh文件
文件存放在Linux系统的/usr/java/test文件下
#! /bin/bash
nohup java -jar /usr/java/test/demo.jar > release_out.log 2>&1 &start_ok=false
创建shspringboot.sh文件
文件存放在Linux系统的/usr/java/test文件下
#! /bin/bash
l=`ps -ef|grep demo.jar|grep -v grep|awk '{print $2}'`
for i in $l
do
kill -9 $i
done
然后回到Jenkins应用、启动
项目构建成功