若是你手动部署过项目,必定会深感持续集成的必要性,由于手动部署实在又繁琐又耗时,虽然部署流程基本固定,依然仍是容易出错。java
若是你很熟悉持续集成,必定会赞成这样的观点:“使用它已经成为一种标配”。node
什么是持续集成 Continuous Integration(CI) is a development practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early. ———ThoughtWorks
翻译过来就是:持续集成是一个开发行为,它要求开发者天天屡次将代码集成到一个共享的仓库,每次提交都会被自动构建所检查,团队可所以提早检测出问题。git
持续集成的工具很是多,例如用java语言开发的Jenkins,因为其能够在多台机器上进行分布式地构建和负载测试的特性,不少大公司都在使用它。github
可是Jenkins的不加修饰的界面界面让我有些嫌弃...npm
随着GitHub的发展,出现了愈来愈多支持GitHub的CI/CD产品。在GitHub市场上,能够看到,已经支持的持续集成服务提供商已超过300多家(详情)。 选择Travis CI,是由于身边不少朋友的推荐。 缓存
下面分享一下我是如何利用Travis CI+GitHub实现持续集成和自动部署的,经过个人一些研究和实战经验,但愿能够帮到有须要的朋友。bash
Travis CI是用Ruby语言开发的一个开源的分布式持续集成服务,用于自动构建和测试在GitHub托管的项目。支持包括Javascript、Node.js、Ruby等20多种程序语言。对于开源项目免费提供CI服务。你也能够买他的收费版,享受更多的服务。分布式
Travis CI目前有两个官网,分别是 travis-ci.org 和 travis-ci.com 。 travis-ci.org 是旧平台,已经逐渐往新平台 travis-ci.com 上迁移了。对于私有仓库的免费自动构建,Travis CI在新平台上给予了支持。工具
Travis CI在自动部署的时候,须要push内容到仓库的某个分支,而访问GitHub仓库须要用户受权,受权方式就是用户提供 Access Token 给Travis CI。测试
获取token的位置:GitHub->Settings->Developer Settings->Personal access tokens
。
勾选repo
下的全部项,以及user
下的user:email
后,生成一个token,复制token值。
注意:这个token只有如今能够看到,再次进入就看不到了,并且是再也看不到了,忘记了就只能从新生成了,因此要记住保管好。
进入Travis官网,用GitHub帐号登陆。(我目前使用的是它的旧平台)
登陆后,会在Travis里看到本身GitHub帐号下全部的public open source repo。
选择目标项目,打开右侧开关。
.travis.yml
配置文件注意文件名以
.
开头。
Travis CI的一次构建分两个步骤:
Travis CI提供了一些构建生命周期的“钩子”
一个完整的 Travis CI 构建生命周期:
apt addons
cache components
before_install
install
before_script
script
before_cache
(for cleaning up cache)after_success
or after_failure
before_deploy
deploy
after_deploy
after_script
在 before_install
、before_script
以前,或者after_script
以后,均可以运行自定义命令,详细资料可参考官方文档:Job Lifecycle
我在footprint
项目中的.travis.yml
完整配置:
language: node_js #设置语言
node_js: "10.16.3" #设置语言版本
cache:
directories:
- node_modules #缓存依赖
# S: Build Lifecycle
install:
- npm i
script:
- npm run build
#after_script前5句是把部署分支的.git文件夹保护起来,用于保留历史部署的commit日志,不然部署分支永远只有一条commit记录。
#命令里面的变量都是在Travis CI里配置过的。
after_script:
- git clone https://${GH_REF} .temp
- cd .temp
- git checkout gh-pages
- cd ../
- mv .temp/.git dist
- cd dist
- git config user.name "${U_NAME}"
- git config user.email "${U_EMAIL}"
- git add .
- git commit -m ":construction_worker:- Build & Deploy by Travis CI"
- git push --force --quiet "https://${Travis_Token}@${GH_REF}" gh-pages:${D_BRANCH}
# E: Build LifeCycle
# 只有指定的分支提交时才会运行脚本
branches:
only:
- master
复制代码
将 .travis.yml
push 到远程,能够看到 travis 开始构建编译了。而且以后每次push代码,travis 都会自动执行.travis.yml
里配置的脚本任务了。
自动编译:
构建完,travis 会根据个人配置,自动部署到 GitHub:
构建成功后,咱们就能够在本身的GitHub项目里添加build
徽章了。 方法:在Travis里,点击项目右侧的徽章,便可获取小徽章地址,将地址放在README.md文档中便可。
关于 GitHub 徽章的自定义,能够参考个人另外一篇文章 github项目徽标
--
欢迎转载,转载请注明出处:champyin.com/2019/09/27/…