这是freeeyes在PSS项目应用上的总结,干货满满。他说看了不少资料,内容都过时了,甚至是错误的,只能自己探索了。探索成功的结果就是这几篇系列文章。

PSS项目地址:https://github.com/freeeyes

 

最近开始着迷于github的持续集成。

以前一直把github当成一个 SVN在使用,版本控制和版本管理。后来,发现有些github上有好玩的徽章,于是自己也想弄一个,没想到一下子就不可自拔,github的徽章(Badges)简直就像一个新世界的大门。而打开这个大门的钥匙,就是TarvisCI 。

最近一个月一直在折腾这个东西,乐此不疲,因为真的太强大了。

今天终于利用tarvisCI,打通了,从编译,到代码静态检查,到程序测试,到测试报告回写github的全流程。中间也遇到了不少坑。在这里记录一下。

首先先说,编译。

tarvisCI实际提供的是一个暂时的Linux虚拟机(收费版可以有更多的OS选择),你可以把你的代码放在上面去编译执行。当遇到错误的时候,tarvisCI会终止操作,并返回给你一个错误信息。它可以和你的github提交绑定。

首先,你需要登录tarvisCI的网站。(Test and Deploy Your Code with Confidence

然后,你需要用你的github账号登录。

登录成功后,你可以看到你的所有的github工程。

找到你想自动化测试的工程,选择setting

一般,默认的打开和github绑定的选项。一般保持如下两个选项卡打开就行了。

这样,当你每次自动提交的代码的时候,TarvisCI都会帮你自动化编译。当然,这个是依赖脚本的,这个脚本的名称,一般是.travis.yml,也可以是别的名称。但是一定要以.yml后缀为结尾。请注意,这个文件一定要放在github项目的根目录才行。

好了,上述配置完毕。

下面,就讲讲脚本怎么写吧。一个脚本的范例

sudo: required
dist: trusty
language: cpp
os:
– linux

compiler:
– gcc

branches:
only:
– master

env:
global:
– GH_REF: github.com/freeeyes/PSS.git
– secure: “XXXXXXXX”

before_install:

before_script:
– make -j 4

after_script:
– echo $(pwd)

 

这是一个标准的脚本。

compiler:
只的是编译器,因为我的项目是C的,所以用gcc, 如果是java 这里可以指定java的编译器。

branches:
分支,这里你可以指定你的编译分支,不一定是master,可以是devloper。

env:

这里设置你的全局环境变量。

这里要特别强调一个非常有用的东西。GH_TOKEN。公钥和私钥。

因为有时候,我们需要对某些数据连接进行验证,这里就牵扯到了用户名和密码。比如,我的tarvisCI回调我的github接口写点东西,这时候,我们不可能吧github密码写在脚本里,这样岂不是非常容易被别人盗走?

实际上,tarvisCI已经为你想到了这一点,你可以在tarvisCI的setting界面下,把你的隐私数据设置在这里面,这里可以包括密码,用户名等敏感信息。这些信息,在脚本里,是以全局变量名的形式提供调用,非常的安全。

比如

curl -x -$(GH_TOKEN)

before_install:

在这里执行你的项目需要在便以前需要的第三方库。或者安装前的准备工作,这里的语法和bash语法完全兼容。

before_script:
在这里执行你的工程编译

after_script:
在这里,可以添加你的工程编译后的收尾工作,比如make test之类。

写完这个脚本,就可以提交了。

当你提交后,马上就会在tarvisCI下获得执行。

点击箭头的部分,就可以看到结果。

而红框的部分,就是编译日志。在这里你可以看到所有的tarvisCI脚本的执行情况。以及当出现了异常,异常位置和语句是什么。

freeeyes - TarvisCI 全流程使用实践(二)
谈谈网站架构设计开发的一些来龙去脉