使用 Travis CI 自动部署 Hexo

相信大家对Travis
Ci
已经不再陌生了,Github上已经有大部分的项目已经采用了它。

鉴于使用Hexo部署网站的繁琐性,便利用软件开发中的持续集成工具Travis CI来帮助完成这一繁杂过程。

Travis
Ci是一个基于云的持续集成项目,目前已经支持大部分主流语言了,如:C、PHP、Ruby、Python、Nodejs、Java、Objective-C等等,Travis
Ci与Github集成非常紧密,官方的集成测试托管只支持Github项目,不过你也可以通过Travis
Ci开源项目搭建一套属于自己的方案。

Travis CI


CI是Continuous Integration的缩写,持续集成之意。

持续集成是一种软件开发实践,每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

图片 1

Continuous Integration

Travis CI
是目前新兴的开源持续集成构建项目,用来构建托管在GitHub上的代码。它提供了多种编程语言的支持,包括Ruby,JavaScript,Java,Scala,PHP,Haskell和Erlang在内的多种语言。许多知名的开源项目使用它来在每次提交的时候进行构建测试,比如Ruby
on Rails,Ruby和Node.js。

Travis
CI是在软件开发领域中的一个在线的,分布式的持续集成服务,用来构建及测试在GitHub托管的代码。这个软件的代码同时也是开源的,可以在GitHub上下载到,尽管开发者当前并不推荐在闭源项目中单独使用它。

如果你是Github的爱好者,那么Travis绝对值得一试,目前我已经把托管在Github上的部分项目使用了Travis
Ci来做集成测试了。

工作原理


当我们每次进行push等动作时,Travis CI
会自动检测我们的提交,然后根据配置文件,搭建虚拟主机来运行测试,构建等指令。在这里,就是运行hexo g d等命令来自动生成、部署静态网页。

图片 2

Travis CI

Travis CI
官方文档:https://docs.travis-ci.com/

如下图:

具体配置



Hexo 搭建

这里使用Hexo+Next+GitHub Pages组合示范过程,具体过程不再赘述。网站源码放到Hexo分支,博客的静态文件部署到master分支。

图片 3

hexo源代码

那么问题来了,Travis
Ci的中文文档太少了,于是我硬着头皮写了一篇简洁的教程,如有不足之处,请勿吐槽!

设置 Travis CI

登陆 Travis CI,使用 GitHub 账户登录,它会自动关联 GitHub
上的仓库。点击右上角用户查看 GitHub
仓库,并选择要启动的项目,这里选择yourname/yourname.github.io

点击设置按钮,进入设置选项,开启相关服务,Build only if .travis.yml is present:指只在有.travis.yml时改变了才构建;Build pushes:push
完分支后开始构建。

图片 4

设置

访问仓库是需要权限的,下面配置权限信息。

首先我们的要有一个Github账号,接下来就打开Travis
Ci的官网,通过Github进行授权登录,一系列的验证过后。

配置 Acess Token

登陆GitHub,进入设置界面,在Personal access tokens页面下点击右上角的Generate new token按钮会生成新的token,随后输入密码,取个名字,勾选一些权限

图片 5

Personal access tokens

拷贝 token 并在 Travis CI 页面中配置Environment Variables

图片 6

Environment Variables

Travis CI 已获得仓库权限,现在可以给它相关操作指令了。

我们得把Github的项目同步到Travis
Ci的管理后台,然后针对某个项目打开开关。

配置 .travis.yml

.travis.yml 内容如下:

language: node_js  #设置语言

node_js: stable  #设置相应的版本

install:
  - npm install  #安装hexo及插件

script:
  - hexo cl  #清除
  - hexo g  #生成

after_script:
  - cd ./public
  - git init
  - git config user.name "yourname"  #修改name
  - git config user.email "your email"  #修改email
  - git add .
  - git commit -m "update"
  - git push --force --quiet "https://${GH_TOKEN}@${GH_REF}" master:master  #GH_TOKEN是在Travis中配置token的名称

branches:
  only:
    - hexo  #只监测hexo分支,hexo是我的分支的名称,可根据自己情况设置
env:
 global:
   - GH_REF: github.com/yourname/yourname.github.io.git  #设置GH_REF,注意更改yourname

.travis.yml 配置完成后,还需要注意一个问题,即 Travis
在创建虚拟机后,如何利用npm install安装 Hexo
及其依赖文件。进行过本地部署的话就不难发现,我们所需要的依赖文件会自动添加到
package.json 列表中,因此 package.json 文件不可少。

图片 7

package.json

配置Hexo时还会生成node_modules文件夹,这是 Hexo 及其依赖包的位置,它和
package.json 文件列表是对应的。因此 node_modules 文件夹不需要 push
远程仓库,CI平台的虚拟机会自己创建的。

另外注意这些文件的格式,尤其是.yml的格式,稍有偏差就有可能出问题。

例如:MessageDisplayKit已经打开了开关,进行持续继承项目了。

Push 到 GitHub

在_posts目录下新建文章并 push 分支,登陆 Travis CI
即可发现已经检测到分支变化并开始构建,其中job log记录了构建的过程。

图片 8

hexo deployer

自动部署完成,打开网页查看效果

图片 9

post


参考资料

接下来我们就一一详细讲解怎样加入Travis Ci持续集成工具的过程。

步骤:

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测试的基本配置了。

然后你就会想,逗比,不同项目类型处理方法呢?

来了嘛!我们不急哈!

不同项目类型,具体有以下几种:

1、单独只有project的项目

2、依赖CocoaPods管理第三方库的项目

3、依赖workspace管理的项目(可能你需要操作build的顺序、修改自动构建命令等等)

首先仅仅单独Project工程文件的项目,使用基本配置就ok了,下面主要讲依赖于workspace的项目。(CocoaPods也是使用workspace,这点我应该比较好理解)

如果你是依赖CocoaPods进行管理第三方管理的项目时,那么你需要把xcode_project这个key改为xcode_workspace。

那么问题又来了,Podfile管理的第三方库怎么来编写构建代码呢?让以下步骤来帮你吧!


就以PopMenu这个开源项目来讲。

1.打开你的项目。

2.选择项目的Manage Schemes

3.把你需要构建的Target勾上shared选项

4.选中你需要管理的scheme,点击左下角的Editi按钮

5.选择Build选项,点击左下角的+号按钮,添加你需要依赖的CocoaPods管理的第三方静态库的名字,下图是已经添加后的截图。

6.拖动你需要首先构建的Target(这里需要注意一下,有一些依赖库需要先编译某些Target才可以往下继续编译的情况,所以这里可以帮你解决)

如果你还没学会的话,温馨提醒,这里还提供了Travis
Ci官网提供的教程,让你的项目加入持续集成测试没有任何障碍。

做个小广告,我的Github:曾宪华 
欢迎Follow哦!