Travis CI用来持续集成你的项目

时间:2022-02-17 00:05:46

这里持续集成基于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仓库中

Travis CI用来持续集成你的项目

最后将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 CI用来持续集成你的项目

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

Travis CI用来持续集成你的项目

加密


在加密之前我们先在项目跟目录下新建一个.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 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 CI用来持续集成你的项目

安装与使用中遇到的问题


安装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用来持续集成你的项目的更多相关文章

  1. 利用Travis CI+GitHub实现持续集成和自动部署

    前言 如果你手动部署过项目,一定会深感持续集成的必要性,因为手动部署实在又繁琐又耗时,虽然部署流程基本固定,依然容易出错. 如果你很熟悉持续集成,一定会同意这样的观点:"使用它已经成为一种标 ...

  2. 【持续集成】GitLab CI + Docker 实现持续集成

    GitLab CI + Docker 实现持续集成 一.持续集成(Continuous Integration, CI)的基本概念 概述 在传统软件的开发中,代码的集成工作通常是在所有人都将工作完成后 ...

  3. CI / CD /CD 持续集成 持续交付 持续部署

    CI / CD /CD 持续集成 持续交付 持续部署 CI CD 是啥?干了啥? CI continuous integration 持续集成 CD continuous delivery 持续交付 ...

  4. 【下一代核心技术DevOps】:(五)微服务CI与Rancher持续集成

    1. 引言 DevOps的核心魅力是快速的持续集成交付,降低研发和实施运维之间的交互,使得传统的各种扯皮现象统统消失.最重要的是降低成本 保障产品交付可靠性. 使用Rancher作为持续集成的关键环节 ...

  5. GitLab CI/CD 进行持续集成

    简介 从 GitLab 8.0 开始,GitLab CI 就已经集成在 GitLab 中,我们只要在项目中添加一个 .gitlab-ci.yml 文件,然后添加一个 Runner,即可进行持续集成. ...

  6. CI实践_Android持续集成

    之前已经实现了Android的持续集成,并在项目中应用了一段时间.恰逢现在有几分钟时间,把之前的一些零散的点滴记录和整理一下,供有需要的朋友参考,或后续复用. 需要的准备知识:gitlab.Jenki ...

  7. windows部署jenkins持续集成maven测试项目不能访问测试报告

    买了一台阿里云的服务器用于练习maven test项目,系统版本wiondows server 2012,将jenkins war包部署在Tomcat服务器上,项目构建后,生成的报告在C:\Windo ...

  8. Jenkins持续集成构建自动化测试项目

    1.配置内容安全策略(配置一次): 1.1.构建一个*风格的软件项目 1.2.Build Triggers:Build when job nodes start 1.3.Build:Execute ...

  9. jenkins(8): 实战jenkins+gitlab持续集成发布php项目(代码不需要编译)

    一. jenkins 的配置 1.前提条件安装了GitLab Plugin (源码管理使用),GitLab Hook(gitlab webhook需要) Manage Jenkins--->Ma ...

随机推荐

  1. C++ 系列:深拷贝与浅拷贝

    Copyright © 1900-2016, NORYES, All Rights Reserved. http://www.cnblogs.com/noryes/ 欢迎转载,请保留此版权声明. -- ...

  2. 切分 Tomcat 的 catalina.out 文件,解决日志文件过大的问题

    原文:http://unmi.cc/split-tomcat-catalina-out-file Linux 下使用 cronolog 工具来切分 catalina.out 这里重点介绍这种方法,具体 ...

  3. poj1222 EXTENDED LIGHTS OUT 高斯消元||枚举

    Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8481   Accepted: 5479 Description In an ...

  4. 解读(function($){...})(jQuery)

    function(arg){...}这就定义了一个匿名函数,参数为arg 而调用函数 时,是在函数后面写上括号和实参的,由于操作符的优先级,函数本身也需要用括号,即:(function(arg){.. ...

  5. NoClassDefFoundError: org/slf4j/LoggerFactory解决

    缺少slf4j-api-1.5.2,slf4j-log4j12-1.5.2,log4j-1.2.8这几个包,导入即可

  6. iOS安全——代码混淆&反编译

    本文是初步了解和集成网上的相关反编译博客, 并做公司内部技术人员分享研讨PPT.

  7. 第七篇、CSS3新增属性

    <!-- 1.透明度 opacity(设置不透明度):0.2: --rgba --background-color:rgba(255,0,0,0.8); 2.块阴影和圆角阴影 --box-sha ...

  8. 使用Android简单实现有道电子词典

    前言: 毕业设计的内容,仅仅有Java基础.没学过Android. 本着用到什么学什么.花费了10多个晚上完毕毕业设计. 当然,仅仅是简单的实线了电子词典功能,自始至终没有考虑过性能等问题. 本电子词 ...

  9. 关于Mybaits映射一点心得

    本人的第一篇手写博客 -日期2017-11-06 在写博客之前一直使用手写笔记!!! 以前一直使用Hibernate,基本上没用过Mybatis,工作中需要做映射关系,简单的了解下Mybatis的映射 ...

  10. 单系统登录机制SSO

    一.单系统登录机制 1.http无状态协议 web应用采用browser/server架构,http作为通信协议.http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关 ...