Travis CI 系列自动化部署测试教程(VPS服务器)

 浆糊之家   2018-12-15 14:13   348 views 热度值

编写代码只是软件开发的一小部分,更多的时间往往花在构建(build)和测试(test)。

为了提高软件开发的效率,构建和测试的自动化工具层出不穷。Travis CI就是这类工具之中,市场份额最大的一个。

自动化部署测试Travis CI 系列

本文介绍 Travis CI 的基本用法。用好这个工具不仅可以提高效率,还能使开发流程更可靠和专业化,从而提高软件的价值。而且,它对于开源项目是免费的,不花一分钱,就能帮你做掉很多事情。

一、什么是持续集成?

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

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

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

二、使用准备

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

拥有 GitHub 帐号

该帐号下面有一个项目

该项目里面有可运行的代码

该项目还包含构建或测试脚本

如果这些条件都没问题,就可以开始使用 Travis CI 了。

Travis 官方API及教程页面 https://docs.travis-ci.com/

 

 

下面开始安装基础准备工作

Linux下的安装(强烈建议不要使用windows来CI)

Deploy Key

记的你的服务器要配置免密码登陆服务器

生成ssh密钥用于跟仓库通信以及服务器通信(如果和服务器配置了免密登陆,就不用在生成了,直接使用那个相应的rsa文件)

生成成功后,一般在系统的根目录下面(如果是通过软件的,在软件的根目录内),目录内有二个密钥文件(_rsa.pub公钥和_rsa私钥),

打开yourename_rsa.pub 公钥文件(复制里面的内容), 本文统一把我生成的名称取成zzq(即zzq_rsa.pub),所以下面会用简称

登陆到github仓库,在设置页面里面,点击add deploy key,把zzq_rsa.pub刚刚复制的内容粘贴进来

 

自动化部署测试Travis CI 系列

Travis CI 系列自动化部署测试教程(VPS服务器)

Travis CI 系列自动化部署测试教程(VPS服务器)

 

最后将zzq_rsa文件内复制到我们项目的根目录,这样便于后面操作生成密钥

 

关联仓库,做点小准备工作

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

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

假设现在已经对某个项目开启了 Travis,那么先去看看 Settings 里默认开启的那几项,根据自己实际需求进行设置,没什么特殊需求默认的设置就可以了

 

 

2、创建添加 .travis.yml 是你自己项目的根目录哦(稍后要提交到你关联的仓库中的)

说白了接下来的事情都是如何去写这个配置文件,因为 Travis 全是根据这个配置文件去执行相应动作的。

创建的文件放在项目的根目录中,根据你的语言不同,配置也会有较大差异,测试 nodejs 配置文件:

 

 

3、进入你的travis网站,进入可监听的创建,复制一串图标代码到你的项目中,会时实显示,可忽略此步骤

Travis CI 系列自动化部署测试教程(VPS服务器)

Travis CI 系列自动化部署测试教程(VPS服务器)

 

触发构建

接下来如上面所说的第三步,将这个 .travis.yml 文件提交到 GitHub,那么 Travis 就会自动触发构建任务,这时候还没配置加密密钥,所以一般会失败,如果想成功把addons的相关配置删除。

下面开始教本地安装travis来加密处理密钥

 

安装travis及加密密钥教程

Travis安装需要Ruby环境,所有需要安装Ruby,并且需要安装rubygems插件。

先安装ruby,及依赖包

 

 

 

查看RubyGems环境变量配置命令:

正确找到会输出内容 /usr/bin/gem

如果没有找,则需要进行环境变量的设置,有则无需设置了

 

然后开始安装travis(会比较难安装上,有的需要翻墙)

哎,重试了几次发现敲完这段 shell 如同石沉大海一般,屁都不放一个。。。就算开了代理还是纹丝不动,没办法只能换镜像了。

查看一下当前的镜像,这货(rubygems)国内出奇的难以访问,网上一搜国内的镜像源,Ruby China 的应该很显眼吧~

然后再查看一下 gem 镜像,确保只有 Ruby China 的 gem 源(能代理尽量用代理,有些源还是蛮坑的)

 

接下来让我们先在命令行中登录 Travis

输入travis login

会要求你输入 GitHub 的账号密码,这个是走 GitHub 的服务,所以不用担心密码泄露。

将目录切换到项目根目录下,也就是 .travis.yml 目录下。因为我们需要让 travis 远程登录自己的服务器,所以需要将本地保存着的 SSH 私钥进行加密处理(默认你也是通过 SSH 免密登录的模式哦,如果没有配置网上查一下免密登陆服务器)

 

配置.travis.yml(如果没有,新建)

进入你的项目的根目录中新建哦(不要瞎建)

添加环境变量来保护自己的github密钥。

Travis CI 系列自动化部署测试教程(VPS服务器)

Travis CI 系列自动化部署测试教程(VPS服务器)

点击more options 选择 setting.

Travis CI 系列自动化部署测试教程(VPS服务器)

Travis CI 系列自动化部署测试教程(VPS服务器)

这里面可以设置环境变量名和值,重要的信息可以放在此入,然后在配置.yml文件的时候直接写name变量名即可,比如将github的token保存在此,

在配置中可以直接写此变量名$name  会调用上面value的值

 

 

开始加密,参考下面代码加密:

# zzq_rsa是需要加密的文件,指定到相应的目录,如果就在当前目录就写名称即可

# <github name>/<github repo> 上面已经标注了,但还是说明一下,

<github name> 是github上的用户名不是邮箱名

<github repo> 是在github上创建的项目仓库名称

 

这个时候去看一下当前目录下的 .travis.yml会多出几行

 

开始创建远程服务器信息

在项目根目录下面创建.travis文件夹,里面创建ssh_config文件,内容如下

 

 

此时配置已经完毕,上传到github里面,那么Travis 会有变化,如果不出意外应该成功,显示如下

 

所有在配置Travis中碰到的问题集中整理

问题一:报错No such file or directory - git

解决方法:如果你是在linux系统下使用别忘了还要在装git哦(大部份你们刚装会忽略了),不然会报No such file or directory - git

 

问题二:报错The command "openssl aes-256-cbc -K $encrypted_xxxxxxxxxxx_key -iv $encrypted_x

解决方法:Windows用户可能会出现错误,请使用linux系统加密,因为window加密后在解密容易出现异常

 

问题三:报错Can't figure out GitHub repo name. Ensure you're in the repo directory, or specify the repo name via the -r option (e.g. travis <command> -r <owner>/<repo>)

解决方法:因为你使用了travis encrypt-file .travis/zzq_rsa --add 这样的命令加密(有的系统会报错),可按我的流程使用travis encrypt zzq_rsa --add -r <github name>/<github repo> 这样的命令,后面是github名称/项目名称,要是还没明白看上面文件中也有参考案例

 

问题四:报错gem install cocoapods ERROR: While executing gem ... (Gem::FilePermissionError)

解决方法:提示权限不够,用gem安装的时候加个sudo即可,例如 sudo gem install ruby

 

travis.yml相关一些配置资料

 

 

 

 发表评论


表情