持续集成及自动化部署工具
持续部署[CD]
**仅仅单元测试还不够,各个模块必须能够在服务器上运行;
**关注点在于项目功能(各个模块)部署至服务器后可以运行,为测试环节或最终用户使用做好准备;
持续集成[CI]
**经常性、频繁的把所有模块集成在一起进行测试[集成测试],有问题尽早发现;
**关注点在于尽早发现项目整体运行问题,尽早解决;
持续交付[CD]
**用小版本不断进行快速迭代,不断收集用户反馈信息,用最快的速度改进优化;[大版本/release]
**关注点在于研发团队的最新代码能够尽快让最终用户体验到;
总体目标
**好处:
***1.降低风险;
***2.减少重复过程[如编译、测试、打包等固定流程] - 自动化流程;
***3.任何时间、任何地点生成 "可部署的软件";
***4.增强项目的可见性<1>有效决策;<2>注意到趋势;
***5.建立团队对开发产品的信心;
Jenkins<open> | Hudson<Oracle>
** 前提知识:Linux基本命令|vim编辑器|Maven项目构建管理|Github|SVN
** 可整合Github或Subversion
** 人工部署
** 自动化部署
*** 搭建持续集成环境:可以把构建、部署自动化,减轻工作量
> deploy web container插件 + >
*** dev > git repository > 钩子程序 > jenkins > [GIT插件]> code >打包> war包>部署>Tomcat server
> [Maven插件] > + >
Jenkins:
### Jenkins + SVN:
** 要点:
*** 创建虚拟机安装Linux系统:vm1-svn,vm2-jenkins,vm3-application(tomcat);
*** 版本控制子系统(SVN):
- subversion服务器;
- 项目对应版本库;
- 版本库中钩子程序;
-- linux curl命令:-X:指定请求方式;-v:显示响应结果;-u:携带用户名/密码;-H:携带请求消息头信息;
*** 持续集成子系统
- JDK;
- Tomcat;
- Maven;
- Jenkins:
-- 主体程序;
-- svn插件;
-- maven插件;
-- Deploy to Web Container插件;
***应用发布子系统
- JDK;
- Tomcat;
### Jenkins + Github:
**要点:
*** Jenkins需要部署到外网,因Github无法无法访问内网地址;
- 安装Jenkins;
*** Jenkins所在主机需要安装GIT,git从GitHub上clone代码;
- echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc # >>追加
- source /etc/bashrc # 使文件生效
*** Jenkins需要指定git程序位置,和指定jdk、maven程序位置类似;
- 配置git;
*** 在GitHub上使用每个repository的webhook方式远程触发Jenkins构建;
- GitHub配置webhook[repository>settings>webhook>add webhook>远程触发的身份验证令牌]
*** 在Jenkins内关闭“防止跨站请求伪造”;
- 全局安全配置 > CSRF Protection > 取消勾选;
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。