本文最后更新于 2018-11-21【303 天前】,文中所描述的信息可能已发生改变,请谨慎使用。如有问题或建议,欢迎在文章底部留言参与讨论!

Travis CI 提供的是持续集成服务(Continuous Integration,简称 CI)。它绑定 Github 上面的项目,只要有新的代码,就会自动抓取。然后,提供一个运行环境,执行测试,完成构建,还能部署到服务器。
 - Quanyin说:imtqy.com

持续集成

持续集成(Continuous Integration)指的是,频繁地(一天多次)将代码集成到主干。

持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。

它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。

Travis CI

Travis CI 对 Github 上的开源项目提供免费服务,这要求必须有 Github 账号。官网 https://travis-ci.org 只支持开源项目,如果想要对私人项目使用,则需要使用 https://travis-ci.com.

首先,访问官方网站,点击右上角的个人头像,使用 Github 账户登入 Travis CI。Travis 会列出 Github 上面你的所有仓库,以及你所属于的组织。此时,选择你需要 Travis 帮你构建的仓库,打开仓库旁边的开关。一旦激活了一个仓库,Travis 会监听这个仓库的所有变化。
选择 Repo - Quanyin说:imtqy.com

设置

选择好要进行持续集成的仓库之后,然后指定分支,在 setting 里选择 Build only if .travis.yml is present,因为要进行提交部署,所以要在 Github 里生成 personal access token 并作为环境变量填在 Travis 里。

 - Quanyin说:imtqy.com
Personal Access Token - Quanyin说:imtqy.com

生命周期

Travis 具有一个完整的生命周期,从开始到结束是下面的流程。

  1. before_install:install 阶段之前执行
  2. install: 用来指定安装脚本
  3. before_script:script 阶段之前执行
  4. script: 用来指定构建或测试脚本
  5. after_failure 或 after_success:script 阶段失败(成功)时执行
  6. [OPTIONAL] before_deploy:deploy 步骤之前执行
  7. [OPTIONAL] deploy:
  8. [OPTIONAL] after_deploy:deploy 步骤之后执行
  9. after_script:script 阶段之后执行

运行流程

Travis 的运行流程很简单,任何项目都会经过两个阶段。

  • install 阶段:安装依赖
  • script 阶段:运行脚本

其中,如果不需要安装,即跳过安装阶段,就直接设为 true

Travis 每次运行,可能会返回四种状态。

  • passed:运行成功,所有步骤的退出码都是0
  • canceled:用户取消执行
  • errored:before_install、install、before_script有非零退出码,运行会立即停止
  • failed :script有非零状态码 ,会继续运行

一个 Hugo 的例子

下面的这个.travis.yml脚本实现的是每当想 Hugo-theme 继续 commit 时,travis 就会自动的把 exampleSite 生成为网页文件并提交到 Github 的 gh-pages 分支

sudo: required
dist: trusty
git:
  depth: false

matrix:
  fast_finish: true
branches:
  only:
  - hugo-theme              # 只有特定分支的推送才触发构建
env:                        # 设置环境变量
  - HUGO_VERSION : 0.41

install:                    # 安装hugo
  - cd $TRAVIS_BUILD_DIR    #回到初始目录
  - wget -O hugo.tar.gz https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_${HUGO_VERSION}_Linux-64bit.tar.gz
  - tar -xzvf hugo.tar.gz
  - chmod a+x hugo
#after_install:

before_script:
  - cd $TRAVIS_BUILD_DIR            

script:
    - cd exampleSite
    - ../hugo version
    - ../hugo --baseUrl="https://theme.quanyin.ml" -t Blog-theme

after_success:
  - cd public
  - git config --global user.name "Quanyin Tang"
  - git config --global user.email "qytang326@gmail.com"
  - git init
  - git add .
  - git commit -m "Travis CI build"
  - git branch gh-pages
  - git checkout gh-pages
  - git remote add origin https://${GH_TOKEN}@github.com/qytang326/Blog-theme.git
  - git push -f -u origin gh-pages

参考

文章目录

推荐使用:阿里云 云翼计划学生优惠、ECS、轻量应用等产品与服务【 点击注册

本文作者:Quanyin Tang

本文链接:借助 Travis CI 实现自动部署 - https://www.imtqy.com/deploy-by-travis-ci.html

版权声明:如无特别声明,本文即为原创文章,仅代表个人观点,版权归 Quanyin 所有,未经允许禁止转载,经授权转载请注明出处!