ravis CI 提供的是持续集成服务(Continuous Integration,简称 CI)。它绑定 Github 上面的项目,只要有新的代码,就会自动抓取。然后,提供一个运行环境,执行测试,完成构建,还能部署到服务器。
持续集成指的是只要代码有变更,就自动运行构建和测试,反馈运行结果。确保符合预期以后,再将新代码”集成”到主干。
持续集成的好处在于,每次代码的小幅变更,就能看到运行结果,从而不断累积小的变更,而不是在开发周期结束时,一下子合并一大块代码。
https://travis-ci.org/xiazemin/travisCI
https://github.com/xiazemin/travisCI
Travis-CI是一个开源的持续构建项目,能够测试和部署;Travis-CI会同步你在GitHub上托管的项目,每当你Commit Push之后,就会在几分钟内开始按照你的要求测试部署你的项目。
注意:Travis CI分为
Github公开项目:http://travis-ci.org/
Github私有付费项目(私有库):http://travis-ci.com/
官方文档可查看https://docs.travis-ci.com/
登录Travis-CI,使用自己的GIthub账号即可,确认接收访问Github的权限
登录之后,Travis-CI就会同步你GitHub账号的仓库。然后打开个人页面并给你想要构建的项目启用Travis-CI。
选择需要进行测试的私有项目,然后在github上开放权限。
现在就完成了创建工作,接下来需要编辑.travis.yml文件
.travis.yml文件
Travis 要求项目的根目录下面,必须有一个.travis.yml文件。这是配置文件,指定了 Travis 的行为。该文件必须保存在 Github 仓库里面,一旦代码仓库有新的 Commit,Travis 就会去找这个文件,执行里面的命令。
这个文件采用 YAML 格式。如果需要系统地学习,官方文档是个好选择,本博客只介绍通常会使用的语法,而且由于本博客是基于django项目,因此yml文件也是提供给python环境的。
运行流程
Travis 的运行流程很简单,任何项目都会经过两个阶段。
install 阶段:安装依赖,用来指定安装脚本。
install:
install: true
script 阶段:运行脚本,用来指定构建或测试脚本。
script:
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
运行状态
Travis 每次运行,可能会返回四种状态
passed:运行成功,所有步骤的退出码都是0
canceled:用户取消执行
errored:before_install、install、before_script有非零退出码,运行会立即停止
failed :script有非零状态码 ,会继续运行
环境变量
env:
一般不推荐在travis上使用项目真实的config配置文件,如果非得使用,需要进行加密操作。
1.先创建.travis.yml文件(使用VIM也可以,你爱怎么来就怎么来吧!)
2.编辑.travis.yml文件
language: objective-c #语言种类
xcode_project: MyNewProject.xcodeproj # 项目文件相对于.travis.yml文件的路径
xcode_scheme: MyNewProjectTests #你需要集成测试的scheme
3.保存.travis.yml文件
到此你已经完成Travis Ci测试的基本配置了。
使用技巧
5.1 环境变量
.travis.yml的env字段可以定义环境变量。
env:
有些环境变量(比如用户名和密码)不能公开,这时可以通过 Travis 网站,写在每个仓库的设置页里面,Travis 会自动把它们加入环境变量。这样一来,脚本内部依然可以使用这些环境变量,但是只有管理员才能看到变量的值。具体操作请看官方文档。
5.2 加密信息
如果不放心保密信息明文存在 Travis 的网站,可以使用 Travis 提供的加密功能。
首先,安装 Ruby 的包travis。
$ gem install travis
然后,就可以用travis encrypt命令加密信息。
在项目的根目录下,执行下面的命令。
$ travis encrypt SOMEVAR=secretvalue
上面命令中,SOMEVAR是要加密的变量名,secretvalue是要加密的变量值。执行以后,屏幕上会输出如下信息。
secure: “…. encrypted data ….”
现在,就可以把这一行加入.travis.yml。
env:
global:
- secure: “…. encrypted data ….”
然后,脚本里面就可以使用环境变量$SOMEVAR了,Travis 会在运行时自动对它解密。
travis encrypt命令的–add参数会把输出自动写入.travis.yml,省掉了修改env字段的步骤。
$ travis encrypt SOMEVAR=secretvalue –add
详细信息请看官方文档。
5.3 加密文件
如果要加密的是文件(比如私钥),Travis 提供了加密文件功能。
安装命令行客户端以后,使用下面的命令登入 Travis CI。
$ travis login
然后,进入项目的根目录,使用travis encrypt-file命令加密那些想要加密的文件。