基于Travis CI和Github的前端云构建

栏目: 服务器 · 发布时间: 6年前

内容简介:基于Travis CI和Github的前端云构建

最近在思考团队里前端代码部署的问题,之前采用的方案是在本地构建,推到Github上一个专门放build后前端代码的仓库,然后Github的Webhook去触发后端的部署逻辑。代码就从这个仓库里拉取。

这种方案看起来没什么大问题,但总觉得比较awkward。首先这套方案不够自动化,需要大量的人工操作。然后Github的Webhook其实并不是特别好用,如果后期要和我们内部的私有云平台对接起来,还要经过一些桥接才可以。

本来呢,因为最近学了 docker 的缘故,我想写一个简单的Node服务,用来自动构建代码,然后通知服务端部署。每个应用就是一个单独的容器,这样环境就可以隔离。这个方案想来也不错。直到我仔细研究了一下Travis CI,才发现这个CI真是不简单。云端构建的任务用Travis CI就可以完美的实现。

关于CI

CI是持续集成的意思,持续集成里主要包括构建和测试代码。之前对Travis CI的印象是可以跑测试,仔细看了之后才发现Travis CI其实是一个云服务,提供了一个虚拟的 Linux 环境。你可以运行自定义的脚本。这个Linux环境的自由度还是非常大的。对于前端构建来说,Travis CI的网络环境可以快速安装npm包,这是一个非常大的优势。

.travis.yml 文件

Travis CI的配置文件其实就是让你写几个生命周期hook,内容一般是 shell 命令。比如 install 这个hook里主要写一些安装依赖的逻辑, script 这个hook里主要是写测试和构建的逻辑, deploy 这个hook里是写部署的逻辑。另外这几个hook都有各自的 beforeafter 版本。总而言之自由度是很大的。

一个示例 .travis.yml 文件。虽然我们不能直接 .travis.yml 中写逻辑,但我们可以运行任意的脚本,所以可以看出 .travis.yml 的能力基本等价于shell脚本。

language: node_js
node_js:
  - "7"
install:
  - npm install
script:
  - npm run build
after_script:
  - tar -cvf bundle.tar ./dist
  - node deploy.js

云端构建

在看过了上节的 .travis.yml 文件之后,云端构建的大致逻辑应该已经非常清楚了。我们在Travis CI的虚拟机中安装node依赖,build代码,压缩代码,然后运行一个js脚本。这个脚本的内容就是将代码上传到CDN。

deploy.js 中还可以向后端的平台发送部署的请求,以达到自动部署的目的。如果后端是分布式的架构,向管理的节点发送请求即可。

一些展望

Travis CI的能力取决于这个虚拟机里提供了怎样的环境。Travis CI支持docker,因此我们可以用Travis CI进行docker镜像的构建和上传。Travis CI支持Nodejs,因此我们可以在虚拟机中安装hexo,进行博客的云端构建和自动部署。云端的构建,由于保证环境的隔离,因此稳定性会比本地高。以上都是Travis CI可能的用途。Travis CI作为一个云服务,在运维方面,还有无限的可能性等我们去探索


以上所述就是小编给大家介绍的《基于Travis CI和Github的前端云构建》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

互联网+秋叶课堂:我的网课创业

互联网+秋叶课堂:我的网课创业

秋叶 / 北京:机械工业出版社 / 2016-3-1 / 39.0

在线教育被很多人视为 “互联网+”创业热潮中的下一个风口,越来越多的老师和创业者选择在线教育创业。本书作者秋叶老师2013年双11正式带一帮小伙伴开始在线教育创业,在短短两年内“从0到1”,累计做到了超500万元的销售业绩,成为国内Office领域在线教育运营最成功的团队之一。在这本书中秋叶老师结合自己的实战经历,向各位完整剖析了两年创业的真实复盘思考,是一本值得在线教育创业同行入手的必读书。 ......一起来看看 《互联网+秋叶课堂:我的网课创业》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器