travis-ci车技要点
前言
今天学习并使用了Travis.CI,遇到了不少问题,所幸都一一得到了解决,为了让自己印象深刻,决心写个blog,既可当成是一个问题记录,也可以看作是一个有关travis.ci的教程
什么是CI
CI,英文全称:Continuous Integration,即持续集成。那么什么又是持续集成?
持续集成指的是只要代码有变更,就自动运行构建和测试,反馈运行结果。确保符合预期以后,再将新代码”集成”到主干。
持续集成的好处在于,每次代码的小幅变更,就能看到运行结果,从而不断累积小的变更,而不是在开发周期结束时,一下子合并一大块代码。
本文要介绍的就是大名鼎鼎的Travis CI
Travis CI
Travis CI提供的就是一个持续集成服务,它在开源社区(github)上非常流行,想必你在逛github时会经常看到这样的徽章
是的,这就是使用Travis.CI的标志啦,有木有觉得很有逼格呢~
Travis CI的特点
简单易学(学会了之后就是这种感觉呗😏)
高端大气上档次😎
免费!(Travis CI对github上公开的仓库完全免费,对于私有仓库则会收取一定费用,如果你已经付费购买了github的私有仓库,那么就不必再额外支付Travis CI的费用)
Travis CI的使用条件
前面有提到过…Travis CI在开源社区中十分的流行…事实上…Travis CI也只能结合Github去使用
对于免费版Travis CI,它的地址在这里 travis CI 免费版,对于付费版Travis CI,它的地址如下travis CI 付费版
对Travis CI的使用条件总结如下
- 拥有 GitHub 帐号
- 该帐号下面有一个项目
- 该项目里面有可运行的代码
- 该项目还包含构建或测试脚本
无论是免费版还是付费版,它们的使用方法都是相同的
Travis CI的使用
- 使用github账号登录Travis.CI
- 选择需要集成CI服务的仓库并激活,如下图所示
在你项目的根目录下新建一个.travis.yml的文件,该文件指定了travis CI的行为且必须保存在github的仓库中
一旦仓库中有了新的commit,Travis就会去找这个文件,并执行其中的相关命令,该文件使用YAML文件格式进行描述,不得不多提一句,一旦你的YAML文件格式错误,Travis将无法识别并自动build,报错如下
这里有一个在线工具可用于检验你.travis.yml文件的格式是否正确。在线检测YAML文件格式
编写你的.travis.yml文件
有关该文件的内容,Travis 提供了很多功能,详情请移步官网
下面就一些简单的内容做一下解释,假设有.travis.yml文件内容如下
1
2
3
4
5language: python
sudo: required
script: true
before_install: sudo pip install foo
script: py.test上面代码中,设置了四个字段:运行环境是
Python
,需要sudo
权限,在安装依赖之前需要安装foo
模块,然后执行脚本py.test
Travis的运行流程很简单,任何项目都会经过两个阶段
1
2install 阶段: 安装依赖
script 阶段: 运行脚本使用Travis.CI登录服务器实现服务的持续集成
想要实现此功能,需要一定的前提:
- ssh key
- ruby 2.0 +
- 基于某些原因下的科学上网
在具备上述条件后就可以开始我们的Travis CI与服务器的交互集成了
首先需要安装一个gem包:travis
1
gem install travis
安装完成后,切换到你仓库根目录,执行
1
travis login
根据提示,输入你刚刚用于travis-ci网站登录的Github账户名及密码。
做好基本的项目配置之后,我们需要配置持续部署的自动运行脚本。
首先使用
travis encrypt-file
命令对你刚刚在开发环境生成的密匙进行加密(这样一来可以放心地将密匙保存在公开的开源项目当中)1
2此处的--add参数表示自动添加脚本到.travis.yml文件中
travis encrypt-file ~/.ssh/id_rsa --add之后再打开.travis.yml文件,会发现多了一个
before_install
的钩子1
2
3before_install:
- openssl aes-256-cbc -K $encrypted_830d3b21a25d_key -iv $encrypted_830d3b21a25d_iv
-in id_rsa.enc -out ~\/.ssh/id_rsa -dTravis 一共提供了7个钩子,总结如下
钩子名称 | 阶段解释 |
---|---|
before_install | install 阶段之前执行 |
before_script | script 阶段之前执行 |
after_failure | script 阶段失败时执行 |
after_success | script 阶段成功时执行 |
before_deploy | deploy 步骤之前执行 |
after_deploy | deploy 步骤之后执行 |
after_script | script 阶段之后执行 |
注意!!!😡😈默认生成的命令可能会在/
前面带转义符\
,我们不需要这些转义符,手动删掉所有的转义符,否则可能在后面引发莫名的错误 like this
在完成上述内容后,我们还需要正确地设置权限和认证,这是为了避免…出现诸如..需要添加ssh key…确认提示…然而travis CI并没有一个交互式环境…错误如下
在全部的准备工作都完成后,就可以添加部署脚本了,这里以我自己的Python项目为例,给出我的.travis.yml
文件内容
1 | script: |