Travis CI用来持续集成你的项目
这里持续集成基于GitHub搭建的博客为项目
工具:
zqz@ubuntu:~$ node --version
v4.2.6
zqz@ubuntu:~$ git --version
git version 2.7.4
zqz@ubuntu:~$ travis --version
1.8.4
Travis CI简介
Travis CI 是目前新兴的开源持续集成构建项目,它与jenkins,GO的很明显的特别在于采用yaml格式,简洁清新独树一帜。目前大多数的github项目都已经移入到Travis CI的构建队列中,据说Travis CI每天运行超过4000次完整构建。
注意:开始安装一大堆东西之前,你需要去Travis CI上注册一个账号。(一般都会使用github账号)
Linux下的安装(强烈建议不要使用windows来CI)
Deploy Key
生成ssh密钥用于跟仓库通信
ssh-keygen -t rsa -C "youremail@example.com"
成功后,将.pub结尾的文件添加到github仓库中

最后将id_rsa文件复制到我们项目的根目录,这样便于生成密钥。
cp /home/zqz/.ssh_ci/id_rsa /home/zqz/study/zhaoqize.github.io
安装并登陆travis
安装
gem install travis
安装成功后,登陆travis
travis login --auto
登陆成功:
Successfully logged in as zhaoqize!
接着,登陆网页版,设置仓库。

点击仓库名称左边的齿轮,设置开启下面三个。

加密
在加密之前我们先在项目跟目录下新建一个.travis.yml文件。
加密的就是第一步生成的密钥id_rsa,由于前面我们将密钥复制到了项目目录,所以现在这里有id_rsa文件。
//进入项目目录
cd study/study/zhaoqize.github.io
//进行加密
travis encrypt-file ssh_key --add
加密成功:
zqz@ubuntu:~/study/zhaoqize.github.io$ travis encrypt-file id_rsa --add
Detected repository as zhaoqize/blog, is this correct? |yes|
encrypting id_rsa for zhaoqize/blog
storing result as id_rsa.enc
storing secure env variables for decryption
Make sure to add id_rsa.enc to the git repository.
Make sure not to add id_rsa to the git repository.
Commit all changes to your .travis.yml.
这时候看最后一句**Commit all changes to your .travis.yml.。
我们新建的文件一句发生了变化,多了一句:(私人内容使用XXX代替)
- openssl aes-256-cbc -K $encrypted_XXXXXXXX_key -iv $encrypted_XXXXXXXX_iv -in id_rsa.enc -out ~/.ssh/id_rsa -d
再次查看我们的travis ci网页,发现多了一些变化

.travis文件夹
删除我们之前复制到根目录的id_rsa文件
在项目根目录下新建一个.travis的文件夹
将生成的.enc文件移动至.travis文件
ssh_config
在.travis下建立ssh_config文件。
并填写如下信息:
Host github.com
User git
StrictHostKeyChecking no
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes
注意这里的~/.ssh/id_rsa的路径是根据个人设置而变化的。
.travis.yml
最后需要着重配置.travis.yml文件,以为travis ci就是按照这个文件来执行。
具体配置:
# 使用的语言
language: node_js
# 使用的nodejs版本
node_js:
- 4.4.4
# 仓库的分支
branches:
only:
- master
# 执行isntall前需要执行的命令
before_install:
# 配置解密信息
- openssl aes-256-cbc -K $encrypted_4bba640059d8_key -iv $encrypted_4bba640059d8_iv -in .travis/id_rsa.enc -out ~/.ssh/id_rsa -d
# 改变文件权限
- chmod 600 ~/.ssh/id_rsa
# 配置 ssh
- eval $(ssh-agent)
- ssh-add ~/.ssh/id_rsa
- cp .travis/ssh_config ~/.ssh/config
# 配置git 的个人信息
- git config --global user.name 'zqz'
- git config --global user.email zqz@zhaoqize.com
# 执行install
install:
- npm install hexo-cli -g
- npm install
# 执行命令脚本
script:
- hexo clean
- hexo g -d
成功

安装与使用中遇到的问题
安装travis失败
使用sudo权限操作
zqz@ubuntu:~$ gem install travis
Fetching: ffi-1.9.14.gem (100%)
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /var/lib/gems/2.3.0 directory.
zqz@ubuntu:~$ sudo gem install travis
Building native extensions. This could take a while...
...
修改travis的目录
zqz@ubuntu:~$ travis --version
bash: /usr/bin/travis: 没有那个文件或目录
zqz@ubuntu:~$ sudo ln -s /usr/local/bin/travis /usr/bin/travis
[sudo] zqz 的密码:
zqz@ubuntu:~$ travis --version
1.8.4
zqz@ubuntu:~$
生成.enc文件密钥失败
有时候会失败。这时候我们需要在后面加上一些参数
travis encrypt-file ssh_key --add -r zhaoqize/blog
Travis CI用来持续集成你的项目的更多相关文章
- 利用Travis CI+GitHub实现持续集成和自动部署
前言 如果你手动部署过项目,一定会深感持续集成的必要性,因为手动部署实在又繁琐又耗时,虽然部署流程基本固定,依然容易出错. 如果你很熟悉持续集成,一定会同意这样的观点:"使用它已经成为一种标 ...
- 【持续集成】GitLab CI + Docker 实现持续集成
GitLab CI + Docker 实现持续集成 一.持续集成(Continuous Integration, CI)的基本概念 概述 在传统软件的开发中,代码的集成工作通常是在所有人都将工作完成后 ...
- CI / CD /CD 持续集成 持续交付 持续部署
CI / CD /CD 持续集成 持续交付 持续部署 CI CD 是啥?干了啥? CI continuous integration 持续集成 CD continuous delivery 持续交付 ...
- 【下一代核心技术DevOps】:(五)微服务CI与Rancher持续集成
1. 引言 DevOps的核心魅力是快速的持续集成交付,降低研发和实施运维之间的交互,使得传统的各种扯皮现象统统消失.最重要的是降低成本 保障产品交付可靠性. 使用Rancher作为持续集成的关键环节 ...
- GitLab CI/CD 进行持续集成
简介 从 GitLab 8.0 开始,GitLab CI 就已经集成在 GitLab 中,我们只要在项目中添加一个 .gitlab-ci.yml 文件,然后添加一个 Runner,即可进行持续集成. ...
- CI实践_Android持续集成
之前已经实现了Android的持续集成,并在项目中应用了一段时间.恰逢现在有几分钟时间,把之前的一些零散的点滴记录和整理一下,供有需要的朋友参考,或后续复用. 需要的准备知识:gitlab.Jenki ...
- windows部署jenkins持续集成maven测试项目不能访问测试报告
买了一台阿里云的服务器用于练习maven test项目,系统版本wiondows server 2012,将jenkins war包部署在Tomcat服务器上,项目构建后,生成的报告在C:\Windo ...
- Jenkins持续集成构建自动化测试项目
1.配置内容安全策略(配置一次): 1.1.构建一个自由风格的软件项目 1.2.Build Triggers:Build when job nodes start 1.3.Build:Execute ...
- jenkins(8): 实战jenkins+gitlab持续集成发布php项目(代码不需要编译)
一. jenkins 的配置 1.前提条件安装了GitLab Plugin (源码管理使用),GitLab Hook(gitlab webhook需要) Manage Jenkins--->Ma ...
随机推荐
- Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数
上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...
- [APUE]标准IO库(上)
一.流和FILE对象 系统IO都是针对文件描述符,当打开一个文件时,即返回一个文件描述符,然后用该文件描述符来进行下面的操作,而对于标准IO库,它们的操作则是围绕流(stream)进行的. 当打开一个 ...
- [OpenGL超级宝典]专栏前言
我小时候的梦想呢,是做宇航员或者科学家或者是做一款属于自己的游戏,后来前面两个梦想都没有实现,于是我就来实现我的第三个梦想了,,,我呢,也算是零基础,因为我的专业是物联网工程,这个专业覆盖面之广,简直 ...
- nginx源码分析之网络初始化
nginx作为一个高性能的HTTP服务器,网络的处理是其核心,了解网络的初始化有助于加深对nginx网络处理的了解,本文主要通过nginx的源代码来分析其网络初始化. 从配置文件中读取初始化信息 与网 ...
- [Egret]优雅的写http
首先,自从使用链式调用的写法后,就一发不可收拾的喜爱上了这种优雅的方式.不管是写架构还是写模块,我都会不自觉的使用这种最优雅的方式.链式写法既减少了代码量,又非常优雅的. 在使用 egret 的htt ...
- 普通程序员如何转向AI方向
眼下,人工智能已经成为越来越火的一个方向.普通程序员,如何转向人工智能方向,是知乎上的一个问题.本文是我对此问题的一个回答的归档版.相比原回答有所内容增加. 一. 目的 本文的目的是给出一个简单的,平 ...
- 在知乎上看到 Web Socket这篇文章讲得确实挺好,从头看到尾都非常形象生动,一口气看完,没有半点模糊,非常不错
在知乎上看到这篇文章讲得确实挺好,从头看到尾都非常形象生动,一口气看完,没有半点模糊,非常不错,所以推荐给大家,非常值得一读. 作者:Ovear链接:https://www.zhihu.com/que ...
- 编写高质量代码:改善Java程序的151个建议(第8章:异常___建议114~117)
建议114:不要在构造函数中抛出异常 Java异常的机制有三种: Error类及其子类表示的是错误,它是不需要程序员处理也不能处理的异常,比如VirtualMachineError虚拟机错误,Thre ...
- iOS10之Expected App Behaviors
昨天上架到appStore的时候碰到个问题,构建好后上传到itunesconnect的的包都用不了, 显示错误为:此构建版本无效. 或者英文显示为:ITC.apps.preReleaseBuild.e ...
- 解决maven下载jar慢的问题(如何更换Maven下载源)
修改 配置文件 maven 安装 路径 F:\apache-maven-3.3.9\conf 修改 settings.xml 在 <mirrors> <!-- mirror | Sp ...