互联网软件的开发和发布,已经形成了一套标准流程。

持续集成

持续集成(Continuous integration,简称CI)指的是,频繁地(一天多次)将代码集成到主干。

它的好处主要有两个。

(1)快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。

(2)防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度 变大,甚至难以集成。

持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。

持续交付

持续交付(Continuous delivery)指的是,频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。

持续交付可以看作持续集成的下一步。它强调的是,不管怎么更新,软件是随时随地可以交付的。

持续部署

持续部署(continuous deployment)是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。

持续部署的目标是,代码在任何时刻都是可部署的,可以进入生产阶段。

持续部署的前提是能自动化完成测试、构建、部署等步骤。

Apache Ant

Apache Ant,是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。由Apache软件基金会所提供。默认情况下,它的buildfile(XML文件)名为build.xml。每一个buildfile含有一个和至少一个预设的,这些targets包含许多task elements。每一个task element有一个用来被参考的id,此id必须是唯一的。

Jenkins

Jenkins is an award-winning, cross-platform, continuous integration and continuous delivery application that increases your productivity. Use Jenkins to build and test your software projects continuously making it easier for developers to integrate changes to the project, and making it easier for users to obtain a fresh build. It also allows you to continuously deliver your software by providing powerful ways to define your build pipelines and integrating with a large number of testing and deployment technologies.

phar扩展开启

  1. 开启openssl扩展

可持续集成方案

  1. Jenkins

    • Jenkins跟gitlab进行连接配置【gitlab在Settings里的Webhooks进行配置jenkins的项目url,Jenkins进行项目配置等】
    • 当开发者提交代码到gitlab分支上时,触发事件通知Jenkins,Jenkins会从gitlab上下载最新代码
    • Jenkins调用Ant的配置,进行相关的测试,如单元测试、代码风格测试
    • Ant的配置文件为:./build.xml, phpunit的配置文件为:./tests/phpunit.xml, ./tests/case文件夹负责存放测试案例代码
    • 引导文件为:./tests/bootstrap.php, bootstrap.php是链接PHPUnit框架和Codeigniter框架的bridge
  2. gitlab CI runner