持续集成(Continuous integration,简称CI)是指频繁地将代码集成到主干。前端
持续集成的好处能够帮助咱们快速发现错误,集成到主干前须要通过自动测试,若是过程当中出现错误,将没法完成这次集成,这是其一。vue
第二点好处是能够防止分支与主干的误差过大,致使集成难度变大。假如在分支发开时,没有及时集成到主干,而主干又在不断更新,将会致使分支与主干的误差过大,最终致使难以集成。node
使用持续集成工具还可以替咱们完成繁琐的工做,例如自动部署等。git
持续集成的工具很是多,例如 Travis CI
、Jenkins
、Gitlab CI
等等。本文将简单介绍一下 Travis CI
的使用。github
Travis 是一款流行的 CI 工具,可免费用于开源项目。在托管时,没必要依赖任何平台。Travis CI 工具为许多构建配置和语言提供支持。shell
前段时间写了个 Python 的项目,才开始了解到了 Travis CI
。在项目的根目录添加了 .travis.yml
文件进行配置,当代码发生变更时,Travis CI 将会执行测试脚本,经过测试后将代码打包成 Docker 镜像并推送到官方仓库。npm
这两天我用 VuePress 搭建了一个新的博客站点 blog.fedevelop.cn,恰好利用 Travis CI 实现部署的工做,省下了宝贵的时间。json
下面我将自动部署博客的应用做为例子,带你们熟悉持续集成工具。bash
首先在个人 VuePress 项目里添加 .travis.yml
文件。个人内容只有简单 3 行,以下工具
# 指定语言
language: node
# 安装依赖
install: npm install
# 执行脚本
script: npm run deploy
复制代码
deploy
命令是我在 package.json
中定义好的一个命令,内容以下
"script": {
"dev": "xxx",
"build": "xxx",
"deploy": "bash deploy.sh"
}
复制代码
bash deploy.sh
意思是执行 deploy
这个 shell
脚本, deploy.sh
的内容以下
#!/usr/bin/env sh
# 确保脚本抛出遇到的错误
set -e
# 生成静态文件
npm run build
# 进入生成静态文件的文件夹
cd blogs/.vuepress/dist
git init
git add .
git commit -m "auto push"
git remote add origin https://${token}@github.com/<your name>/<your name>.github.io.git
git push -f --set-upstream origin master
cd -
复制代码
意思为先执行 npm run build
命令进行编译,若是报错的话,Travis 将不会进行下面的操做。若是编译没有报错的话,将会进入 blogs/.vuepress/dist
目录,将里面的内容推送到个人 GitHub Page 项目,完成部署工做。
其中 ${token}
将会获取 Travis 中设置的环境变量。涉及隐私的数据,咱们能够经过环境变量的方式来传递。下面咱们就来看如何设置。
下一步打开 Travis 官网 travis-ci.org 能够看到右上角的 Sign in with GitHub
即用 GitHub
帐号登陆。
完成登陆后,进入设置页,能够看到本人的 GitHub 的项目,找到 VuePress 的项目。若是项目过多,找不到项目,能够点击 Sync account
按钮同步帐户。接下里进入设置页,这里咱们能够设置监听的分支、环境变量等。
其中 Environment Variables 为环境变量,Cron Jobs 为定时任务。在 .travis.yml
中可使用 ${key}
取得环境变量中的值。
由于从 Travis 提交代码到 GitHub 默认是会被拒绝的,咱们须要加上 access_token,个人项目里设为了 token。
接下来就能够去 GitHub github.com/settings/to… 获取 access_token,点击 Generate new token
按钮,将生成好的 access_token 复制到 Travis 的环境变量中。到这里就算配置完成。
接下来只要个人提交代码,Travis 就会帮我构建部署,这样我就省去了许多部署的时间。
关于 .travis.yml
的配置还有不少,若是感兴趣也能够到 Travis 官网查看文档。
若是你喜欢个人文章,但愿能够关注一下个人公众号【前端develop】