travis CI
travis可对多语言持续继承,本文以nodejs 为例。 首先添加文件.travis.yml 中
language: node_js
node_js:
- "6"
- "6.1"
- "5.11"
- "0.6"
- "iojs"
版本具体的用法
● node latest stable Node.js release
● iojs latest stable io.js release
● 6 latest 6.x release
在项目配置文件package.json中,添加测试脚本,由于我用的是mocha,因此添加
"scripts": {
"test": "mocha"
},
如果想让每次提交git的时候,触发持续集成,添加以下
"repository": {
"type": "git",
"url": "https://github.com/ryansecret/mytest.git"
}
可以看到,type:git,同样可以添加其它版本工具。
配置完成后,提交到git。在travis中可看到,build的所有过程:
如上:是不是很清晰。
travis的构建主要分两大步骤:1 安装所有依赖项 2 运行script 中定义的脚本,如test等。还可以添加一些具体步骤,其实一个完整build由以下构成:
1. Install apt addons
2. before_install
3. install
4. before_script
5. script
6. after_success or after_failure
7. OPTIONAL before_deploy
8. OPTIONAL deploy
9. OPTIONAL after_deploy
10. after_script
需要注意的是before_install, install or before_script 中只要任何一个失败,整个构建就是失败。
install:
- wget https://protobuf.googlecode.com/files/protobuf-2.4.1.tar.gz
- tar -xzvf protobuf-2.4.1.tar.gz
- pushd protobuf-2.4.1 && ./configure --prefix=/usr && make && sudo make install && popd
可以编写自己的脚本,例如在travis.yml中添加:
install: ./install-dependencies.sh
如果分为多个执行,用法如下:
install:
- bundle install --path vendor/bundle
- npm install
也可以跳过安装脚本:install: true
可以指定编译的git分支:
# blocklist
branches:
except:
- legacy
- experimental
# safelist
branches:
only:
- master
- stable
分支匹配可以使用正则:
branches:
only:
- master
- /^deploy-.*$/
如果此次提交不想构建的话,那么在提交信息中添加:[skip ci]。
自定义host,构造的时候会在/etc/hosts中添加
addons:
hosts:
- travis.dev
- joshkalderimis.com
构建成功后就可以部署了,支持脚本部署:
deploy:
provider: script
script: scripts/deploy.sh
on:
branch: develop
脚本中可以是个请求,重启各个服务器上的服务。
同样可以发布到npm上,
deploy:
provider: npm
email: "YOUR_EMAIL_ADDRESS"
api_key: "YOUR_API_KEY"
设置只有打tag的时候进行部署:
deploy:
...
on:
tags: true
当编译成功或失败时,可设置一个通知:
notifications:
email:
recipients:
- one@example.com
- other@example.com
on_success: [always|never|change] # default: change
on_failure: [always|never|change] # default: always
注意的是上面email的地址是在github上注册过的,否则是收不到消息的。对主要的团队协作平台都有支持,如slack、HipChat 等。
同时还可以设置webhook通知:
notifications:
webhooks:
urls:
- http://hooks.mydomain.com/travisci
- http://hooks.mydomain.com/events
on_success: [always|never|change] # default: always
on_failure: [always|never|change] # default: always
on_start: [always|never|change] # default: never
travis CI的更多相关文章
- Travis CI用来持续集成你的项目
这里持续集成基于GitHub搭建的博客为项目 工具: zqz@ubuntu:~$ node --version v4.2.6 zqz@ubuntu:~$ git --version git versi ...
- [转]Travis Ci的最接底气的中文使用教程
相信大家对Travis Ci已经不再陌生了,Github上已经有大部分的项目已经采用了它. Travis Ci是一个基于晕的持续集成项目,目前已经支持大部分主流语言了,如:C.PHP.Ruby.Pyt ...
- 利用Travis CI 让你的github项目持续构建
Travis CI 是目前新兴的开源持续集成构建项目,它与jenkins,GO的很明显的特别在于采用yaml格式,简洁清新独树一帜.目前大多数的github项目都已经移入到Travis CI的构建队列 ...
- github Travis CI 持续集成
一个项目如何保证代码质量是开发中非常重要的环节,对于开源项目来说更是如此,因为开源项目要面对的是来自不同水平开发者提交的代码.所以围绕开源做持续集成(Continuous Integration)变得 ...
- 使用Travis CI自动部署Hexo博客
自从使用GitHub Pages和Hexo来发布博客之后,不得不说方便了许多,只需要几个简单的命令博客就发布了.但在不断的使用中发现每次的发布操作也挺耗时的. 我一般的操作是将平时整理好的md文件放到 ...
- .NET Core+Selenium+Github+Travis CI => SiteHistory
前言 总是三分钟热度的我折腾了一个可以每天自动截取指定网站页面并保存到Github的项目SiteHistory,感觉挺好(每次都这样). 想知道YouTube今天的首页长啥样么?点此查看 想知道You ...
- 使用Travis CI自动部署Hexo到GitHub
原文链接(转载请注明出处):使用Travis CI自动部署Hexo到GitHub 前言 使用 hexo + gitPages 搭建个人博客的人都知道,每当要发表一篇博文,第一步得手动使用 hexo g ...
- Travis CI实现持续部署
安装Ruby 2.0以上版本并安装travis的命令行工具 可以看出我的已经是安装好的(Ubuntu 16.04.3 LTS 系统) ruby -v ruby --) [x86_64-linux-gn ...
- gradlew在Travis CI没可执行权限 permission denied
问题的来源 我给一个gradlew项目添加Travis CI的时候遇到一个问题,gradlew没有可执行权限.具体错误如下: /home/travis/build.sh: line 45: ./gra ...
- iOS中 为 iOS 建立 Travis CI 韩俊强的博客
每日更新关注:http://weibo.com/hanjunqiang 新浪微博! 你是否曾经试着为 iOS 项目搭建一台支持持续集成的服务器,从我的个人经验而言,这可不是一个轻松的活.首先需要准备 ...
随机推荐
- 二刷Cracking the Coding Interview(CC150第五版)
第18章---高度难题 1,-------另类加法.实现加法. 另类加法 参与人数:327时间限制:3秒空间限制:32768K 算法知识视频讲解 题目描述 请编写一个函数,将两个数字相加.不得使用+或 ...
- Xcode7下模拟器输入文本无法显示系统键盘的解决办法
xcode7下的ios模拟器输入内容无法系统键盘,只能用电脑键盘输入内容,这样可能会对调试带来麻烦. 其实xcode7下的ios模拟器默认只能使用一种,要么是模拟器系统键盘,要么就是是电脑键盘.设置方 ...
- maven学习(下)利用Profile构建不同环境的部署包
接上回继续,项目开发好以后,通常要在多个环境部署,象我们公司多达5种环境:本机环境(local).(开发小组内自测的)开发环境(dev).(提供给测试团队的)测试环境(test).预发布环境(pre) ...
- cnentos中进行bond网卡配置,一切配置无问题,就是ping不通宿主机
服务器网口绑定 1. ifcfg-bond0 DEVICE=bond0 ONBOOT=yes IPADDR=192.168.100.64 NETMASK=255.255.255.0 2. ...
- RBAC基于角色的访问控制
RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成"用 ...
- php json_encode
1.该函数只接受utf-8编码的字符串,其他编码的字符串会返回false 2.字符串中的斜线'/'会被自动转义成'\/',如果不想被转义,可用如下方式(适用于php5.4及以上) json_encod ...
- 51nod1240(莫比乌斯函数)
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1240 题意:中文题诶- 思路:直接暴力筛选就好了... 代码 ...
- 信鸽推送 .NET (C#) 服务端 SDK rest api 调用库(v1.2)
信鸽推送 .NET 服务端 SDK rest api 调用库-介绍 该版本是基于信鸽推送v2版本的时候封装的,先拿出来与大家分享,封装还还凑合,不依赖其他http调用件,唯一依赖json序列化dll ...
- NXP恩智浦P89V51RB2/RC2/RD2单片机解密芯片破解方法!
NXP恩智浦P89V51RB2/RC2/RD2单片机解密芯片破解 P89V51RB2/RC2/RD2是一款80C51微控制器,包含16/32/64kB Flash和1024字节的数据RAM. P89V ...
- Double的精度问题
/** * 自定义Math工具类 * */ public class MyMathTools { /** * 提供精确的小数位四舍五入处理. * * @param v * 需要四舍五入的数字 * @p ...