美文网首页软件测试测试开发实践程序员
为Github项目添加Travis持续集成服务

为Github项目添加Travis持续集成服务

作者: 严北 | 来源:发表于2018-09-03 12:03 被阅读64次

    持续集成(Continuous Integration, CI)是一种软件开发实践,在实践中项目成员频繁地进行集成,通常每个成员每天都会做集成工作,如此,每天整个项目将会有多次集成。每次集成后都会通过自动化构建(包括测试)来尽快发现其中的错误。许多团队都发现这种方法大大地减少了集成问题并且能够快速地开发出高内聚性的软件。[1]

    简单点说,持续集成是将构建并测试的过程自动化,在你提交代码时,持续集成服务能够自动触发构建与测试过程,并反馈结果,加快开发周期,同时减少脏代码的引入。

    持续集成工具有很多,常见的包括 Jenkins、Gitlab-CI和Travis CI。Github上项目的持续集成多是使用的Travis CI,一个开源持续集成云服务。

    基本配置

    引用阮一峰的博客所言[2],要使用Travis CI,你必须满足以下条件:

    • 拥有 GitHub 帐号
    • 该帐号下面有一个项目
    • 该项目里面有可运行的代码
    • 该项目还包含构建或测试脚本

    注册

    首先需要注册travis-ci账号并绑定你的github,访问官网:travis-ci.org

    激活仓库

    绑定账号后,可以看到自己的仓库,点击如图的切换按钮即可激活该仓库的CI功能。

    travis网页中激活仓库

    持续集成脚本编写

    激活后,仓库并不会自动按照你所想的去执行持续集成过程,你需要将这个过程写为.travis.yml脚本。

    以我的QA Admin项目为例,首先构思项目的持续集成执行过程:

    1. 拉取代码
    2. 安装server依赖
    3. 安装test依赖
    4. 执行测试(nosetests tests)

    将上述过程转换为.travis.yml脚本,添加到Github仓库根目录中:

    os: linux
    sudo: false
    language: python
    
    python:
      - "3.6"
    install:
      - pip install -r requirements.txt
      - pip install -r requirements_test.txt
    script:
      - nosetests tests
    cache:
      - pip
    branches:
      only:
        - master
    
    notifications:
      email: false
    

    *重要字段解释:

    • os: 持续集成运行环境
    • sudo: 是否以管理员身份运行
    • language: 代码语言
    • python: 若language为python,可以在python键下指定具体的python版本
    • install: 安装依赖
    • scripts: 执行持续集成的命令,对我这个项目来说,持续集成用于运行单元测试,因此scripts中写执行测试的命令即可
    • branches: 需要进行持续集成的分支

    具体的.travis.yml编写可查看官方文档:https://docs.travis-ci.com/user/getting-started

    查看结果

    推送一个新的commit到master分支,在Travis的项目中可以看到持续集成过程被激活,开始构建并运行:

    travis持续集成运行详情

    拓展配置

    我们可以像其他开源项目那样,将持续集成结果的图片添加到README.md中展示。

    在Travis的项目中,点击①,选择②为Markdown,复制③到Github项目的README.md中即可:

    travis复制结果图片

    效果:

    Github中显示持续集成结果

    参考

    [1] Martin Fowler, 持续集成, 滕云, 译
    [2] 持续集成服务 Travis CI 教程, 阮一峰

    相关文章

      网友评论

        本文标题:为Github项目添加Travis持续集成服务

        本文链接:https://www.haomeiwen.com/subject/xwybwftx.html