持续集成及自动化部署工具

持续部署[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 > 取消勾选;

skyline
4 声望2 粉丝

Linux / Python Web/spider