用 AppVeyor 持续集成 Github 中的 JS 项目

AppVeyor 是一个跑在 Windows 上的 CI 云平台,他可以帮你自动化测试/构建/部署你的项目,并可以与 Git 项目绑定。

持续集成(Continuous Integration)

CI

持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,确定新代码和原有代码能否正确地集成在一起。

AppVeyor 持续集成流程

  1. 提交代码到 Git
  2. Git 调用 AppVeyor 的 WebHook
  3. AppVeyor 会自动下载并执行你指定的脚本命令,如 npm installnpm test
  4. 对测试结果进行邮件通知

AppVeyor & Node.js & Github

下面,我们来介绍如何使用 AppVeyor 持续集成 Github 中的 JS 项目

一、准备一个 Github 项目

带有 Mocha 测试脚本的 JavaScript 项目:

J$X

二、在 AppVeyor 上创建项目

进入「项目列表」,创建新项目(NEW PROJECT)。

在左侧选择项目对应的源代码平台,在右侧项目列表选择要添加的项目

Select Project

三、获取并设置 Webhook URL
在 AppVeyor 集成项目设置中,获取 Webhook URL:

Webhook URL

在 Github 项目 Settings 中,添加 Webhook:

在「Which events would you like to trigger this webhook?」这一项中,我们可以选择很多其他的事件(Commit,Branch Create,Fork 等),或者按默认的只在 Git push 后触发 hook。

因为我们的项目只需要在 Git Push 后进行一遍测试,所以选择了默认事件。

Set Webhook

设置好 Webhook 后,当你 Push 源代码到项目以后,Github 就会发送一个 POST 请求到你的 Webhook URL,触发 AppVeyor 的构建命令。

四、编写构建脚本 appveyor.yml

appveyor.yml 配置文件需要放到项目的根目录,这样 AppVeyor 在构建之前就可以读取你的配置脚本了。

# fix line endings on Windows and checkout all strings with \r\n
init:  
  - git config --global core.autocrlf true

# Test against this version of Node.js
environment:  
  matrix:
    # node.js
    - nodejs_version: "6"
    - nodejs_version: "5"
    - nodejs_version: "4"

platform:  
  - x86
  - x64

# Install scripts. (runs after repo cloning)
install:  
  # Get the latest stable version of Node.js or io.js
  - ps: Install-Product node $env:nodejs_version
  # install modules
  - npm install


# Post-install test scripts.
test_script:  
  # Output useful info for debugging
  - node --version && npm --version
  # run tests
  - npm test

# Don't actually build.
build: off

matrix:  
  fast_finish: true

cache:  
  # local npm modules
  - node_modules -> package.json
五、Push 源代码,并进行自动测试

当你 Push 了 Commit 后, Webhook 会被触发,AppVeyor 便下载了 Github 上的项目,并读取 appveyor.yml,按此配置开始自动构建。

构建测试过程:

Auto Build

构建完毕,测试通过:

Test Complete

AppVeyor 会通过邮件发送测试结果的通知:

Test Result

六、添加构建状态徽章(Status Badge)到 README.md

Status Badge 这是一个动态的图片,它会根据项目最新的测试结果来展示,能够第一时间提醒项目成员这个项目的最新集成状态。

Badges

徽章添加方式:Status badges

参考内容

正在加载 Disqus 评论组件...