持续集成:Travis CI

  • 编写代码只是软件开发的一小部分,更多的时间往往花在构建(build)和测试(test)。
  • 为了提高软件开发的效率,构建和测试的自动化工具层出不穷。Travis CI 就是这类工具之中,市场份额最大的一个。

是什么

Travis-CI 是一个开源的持续构建项目,能够测试和部署;Travis-CI 会同步你在 GitHub 上托管的项目,每当你 Commit Push 之后,就会在几分钟内开始按照你的要求测试部署你的项目。

目前 Travis-CI 分 http://travis-ci.org/ (GitHub 公开项目进这个)和 http://travis-ci.com/ (私有付费项目)

官方文档:[https://docs.travis-ci.com/ tarvis-ci ](https://docs.travis-ci.com/ tarvis-ci )会越来越好,具体请以官方为准。

什么是持续集成?

Travis CI 提供的持续集成服务(Continuous Integration,简称 CI)。它绑定 Github 上面的项目,只要有新的代码,就会自动抓取。然后,提供一个运行环境,执行测试,完成构建,还能部署到服务器。

持续集成指的是只要代码有变更,就自动运行构建和测试,反馈运行结果。确保符合预期以后,再将新代码"集成"到主干。

持续集成的好处在于,每次代码的小幅变更,就能看到运行结果,从而不断累积小的变更,而不是在开发周期结束时,一下子合并一大块代码。

使用

Travis CI 只支持 Github,不支持其他代码托管服务。这意味着,你必须满足以下条件,才能使用 Travis CI。

  • 拥有 GitHub 帐号
  • 该帐号下面有一个项目
  • 该项目里面有可运行的代码
  • 该项目还包含构建或测试脚本
  • 如果这些条件都没问题,就可以开始使用 Travis CI 了。

首先,访问官方网站 travis-ci.org,点击右上角的个人头像,使用你的 Github 账户登入 Travis CI。

Travis 会列出 Github 上面你的所有仓库,以及你所属于的组织。此时,选择你需要 Travis 帮你构建的仓库,打开仓库旁边的开关。一旦激活了一个仓库,Travis 会监听这个仓库的所有变化。

在这里插入图片描述

添加 .travis.yml 文件到你项目根目录下,Travis-CI 会按照 .travis.yml 里的内容进行构建。
在这里插入图片描述

把 .travis.yml push 到你的 GitHub 上以触发 Travis-CI 进行构建。

最后你就可以到构建状态页面来查看你的项目是否构建成功。

在这里插入图片描述

理论

.travis.yml配置文件

Travis 要求项目的根目录下面,必须有一个.travis.yml文件。这是配置文件,指定了 Travis 的行为。该文件必须保存在 Github 仓库里面,一旦代码仓库有新的 Commit,Travis 就会去找这个文件,执行里面的命令。

一个例子:

language: python     # 声明构建语言环境
script: true
sudo: required
#sudo: false     # sudo 权限
before_install: sudo pip install foo
script: py.test
notifications:    # 每次构建的时候是否通知,如果不想收到通知邮箱(个人感觉邮件贼烦),那就设置 false 吧 
email: false
  • Travis 默认提供的运行环境,请参考官方文档 。目前一共支持31种语言,以后还会不断增加。
  • script字段指定要运行的脚本,script: true表示不执行任何脚本,状态直接设为成功
  • required表示需要sudo权限,false表示不需要
  • 在安装依赖之前需要安装foo模块,然后执行脚本y.test
notifications:
  email:
    recipients:
      - somenzz@163.com
    on_success: change
    on_failure: always

如果 commit 不想让 travis ci 构建,那么就在 commit message 里加上 [ci skip] 就行了。

git commit -m “[ci skip] commit message”

运行流程

Travis 的运行流程很简单,任何项目都会经过两个阶段(命令)。

  • install 命令:安装依赖
  • script 命令:运行脚本

install 命令

install命令用来指定安装脚本。

install: ./install-dependencies.sh

如果有多个脚本,可以写成下面的形式。

install:
  - command1
  - command2

上面代码中,如果command1失败了,整个构建就会停下来,不再往下进行。

如果不需要安装,即跳过安装阶段,就直接设为true

install: true

script 命令

script字段用来指定构建或测试脚本。

script: bundle exec thor build

如果有多个脚本,可以写成下面的形式。

script:
  - command1
  - command2

注意,script与install不一样,如果command1失败,command2会继续执行。但是,整个构建阶段的状态是失败。

如果command2只有在command1成功后才能执行,就要写成下面这样。

script: command1 && command2

Travis 部署

script阶段结束以后,还可以设置通知步骤(notification)和部署步骤(deployment),它们不是必须的。

部署的脚本可以在script阶段执行,也可以使用 Travis 为几十种常见服务提供的快捷部署功能。比如,要部署到 Github Pages,可以写成下面这样。

部署的脚本可以在script阶段执行,也可以使用 Travis 为几十种常见服务提供的快捷部署功能。比如,要部署到 Github Pages,可以写成下面这样。

其他部署方式,请看官方文档

Travis 钩子方法

Travis 为上面这些阶段提供了7个钩子。

  • before_install:install 阶段之前执行
  • before_script:script 阶段之前执行
  • after_failure:script 阶段失败时执行
  • after_success:script 阶段成功时执行
  • before_deploy:deploy 步骤之前执行
  • after_deploy:deploy 步骤之后执行
  • after_script:script 阶段之后执行

完整的生命周期,从开始到结束是下面的流程。

  • before_install
  • install
  • before_script
  • script
  • aftersuccess or afterfailure
  • [OPTIONAL] before_deploy
  • [OPTIONAL] deploy
  • [OPTIONAL] after_deploy
  • after_script

下面是一个before_install钩子的例子。

before_install:
  - sudo apt-get -qq update
  - sudo apt-get install -y libxml2-dev

上面代码表示before_install阶段要做两件事,第一件事是要更新依赖,第二件事是安装ibxml2-dev。用到的几个参数的含义如下:-qq表示减少中间步骤的输出,-y表示如果需要用户输入,总是输入yes

Travis 运行状态

最后,Travis 每次运行,可能会返回四种状态。

  • passed:运行成功,所有步骤的退出码都是0
  • canceled:用户取消执行
  • errored:before_install、install、before_script有非零退出码,运行会立即停止
  • failed :script有非零状态码 ,会继续运行

我们经常看到的 在这里插入图片描述
这样一个标识,只看文字就可以看出这个项目是否已经构建成功(让大家知道项目没有问题),如果不成功则会显示 Build failing。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值