zoukankan      html  css  js  c++  java
  • 持续交付11-构建和部署的脚本化

    构建和部署的脚本化

    自动化部署:部署应用运行需要的环境.包括了配置应用程序,初始化数据,配置基础设施,操作系统,中间件,安装所需的模拟外部系统等.

    脚本:指辅助构建,测试,部署和发布应用程序的指令集.持续交付中自动化脚本应该贯穿应用的整个生命周期.

    构建工具:用于自动化构建的辅助工具.功能包括:初始化,设置测试数据,编译源代码,编译测试,运行测试.

    分类:任务导向,产品导向.

    任务导向:根据一系列任务描述依赖网络.每个任务知道自己是否已经执行,且不会记录执行状态.
    产品导向:根据生成的产物描述依赖网络.每一步会生成对应的文件,文件中记录执行状态和时间戳.

    构建工具概述:

    1. make.产品导向构建工具.能在单次构建中追踪依赖关系,还只构建受本次修改影响的组件.缺点:复杂应用和依赖难以调试;特殊字符敏感;依赖脚本环境;
    2. ant.任务导向.Java语言的跨平台,灵活.缺点:xml语法不简洁,不易读;领域模型理解不到位;声明式语言,不易理解;测量指标难以使用;
    3. Nant,MSBuild..net版的ant.问题跟上面类似.
    4. maven.任务导向.约定胜于配置来简化配置,进行命令式构建;自动依赖管理;问题:必须要遵守约定,灵活性较差;xml写dsl;配置依赖更新第一次耗时,且不易回退;
    5. Rake.产品导向.ruby语言.调试方便;通用语言;缺点:只能理解任务和依赖;依赖ruby运行环境;需要组合使用rubygems.
    6. buildr,gradle,gantt.任务导向,内部dsl构建.约定优于配置;定制任务和创建新任务很容易;
    7. psake.window的内部dsl构建工具.

    解决什么问题

    规范构建和部署流程;
    介绍一些构建工具和技巧;

    怎么做

    构建部署脚本化的原则

    1. 为部署流水线每个阶段创建脚本.保持脚本的良好结构.
    2. 使用恰当的技术部署应用程序.
    3. 使用同样的脚本向所有环境部署.
    4. 使用操作系统自带的包管理工具.集中统一管理
    5. 确保部署流程是幂等的.需要结合良好的配置管理达到部署状态已知的状态.最好是修改时全流程部署,但是针对分布式服务,组件的情形,已经进行了版本测试的化,单独部署效果会更好.
    6. 部署系统的增量式演进.找到自动化脚本部署切入点,不断增加自动化比例,逐渐实现部署流程的自动化.

    部署脚本化

    环境管理的核心原则之一是:对测试和生产环境的修改只能由自动化过程执行.实际部署方式有三种:

    1. 写个远程登录脚本,执行对应的指令集;
    2. 写个本地执行脚本,通过代理来触发该脚本;
    3. 通过一些基础设施管理或部署工具来执行部署.需要通过操作系统自身包管理工具打包,进行环境初始化操作.

    实践技巧

    1. 总是使用相对路径.便于不同环境的部署
    2. 消除手工步骤.避免手工文档的维护失真
    3. 从二进制包到版本控制库的内建可追溯性.二进制包中存放版本库构建版本标识
    4. 不要把二进制包作为构建的一部分放到版本控制库中.简化版本控制库,二进制包可重复构建
    5. 测试不应让构建失败.一次性构建整个阶段后再反馈测试中问题,避免异常退出操作,最大化单次构建价值.
    6. 用集成冒烟测试来限制应用程序.
    7. 删除代码中的无用文件.
  • 相关阅读:
    解决“此计算机上已安装了试用版。必须先卸载以前安装的试用版后才能安装另一个试用版。”
    Windows 7 快捷键
    【译】部署Asp.Net MVC 网站到Winodws Azure
    jqGrid专题:搜索
    jqGrid专题:格式化数据
    jqGrid专题:事件文档
    jqGrid专题:方法文档
    jqGrid专题:数据加载
    jqGrid专题:参数文档
    jqGrid专题:jqGrid原理
  • 原文地址:https://www.cnblogs.com/chengmuyu/p/13355919.html
Copyright © 2011-2022 走看看