# 持续集成

插件测试也可以用诸如Travis CI自动运行测试。vscode-test库可以基于 CI 设置插件测试,而且里面还包含了一个 Azure Pipelines 的示例插件。你可以先看看构建管线是什么样子的,或者直接查看azure-pipelines.ymlfile

# Azure Pipelines


pipelines-logo

你可以在Azure DevOps上创建免费的项目,它为你提供了代码托管、看板、构建和测试基础设施等等。最重要的是,你可以获得10 个免费的并行任务容量,用于你构建项目,不论是在 Windows, macOS 还是 Linux 上。

首先,你需要创建一个免费的Azure DevOps账号,然后给你的插件创建一个Azure DevOps 项目

然后,把azure-pipelines.yml文件添加到插件仓库的根目录下,不同于 Linux 中的xvfb配置脚本,需要 VS Code 运行在 Linux 的无头 CI 机器上,我们的配置文件非常简单:

trigger:
  - master

strategy:
  matrix:
    linux:
      imageName: "ubuntu-16.04"
    mac:
      imageName: "macos-10.13"
    windows:
      imageName: "vs2017-win2016"

pool:
  vmImage: $(imageName)

steps:
  - task: NodeTool@0
    inputs:
      versionSpec: "8.x"
    displayName: "Install Node.js"

  - bash: |
      /usr/bin/Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
      echo ">>> Started xvfb"
    displayName: Start xvfb
    condition: and(succeeded(), eq(variables['Agent.OS'], 'Linux'))

  - bash: |
      echo ">>> Compile vscode-test"
      yarn && yarn compile
      echo ">>> Compiled vscode-test"
      cd sample
      echo ">>> Run sample integration test"
      yarn && yarn compile && yarn test
    displayName: Run Tests
    env:
      DISPLAY: ":99.0"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

最后,在你的 DveOps 项目里创建一个新的管线,然后指向azure-pipelines.yml文件,启动 build,然后……真香~

pipelines

你可以启用持续构建——每当有 pull requests 进入特定分支的时候自动进行构建。相关内容请查看构建管线触发器

# Travis CI


vscode-test还包含了一份Travis CI 构建文件,因为 Travis 上的环境变量定义和 Azure 所有不同,xvfb脚本也有些许不一样:

language: node_js
os:
  - osx
  - linux
node_js: 8

install:
  - |
    if [ $TRAVIS_OS_NAME == "linux" ]; then
      export DISPLAY=':99.0'
      /usr/bin/Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
    fi
script:
  - |
    echo ">>> Compile vscode-test"
    yarn && yarn compile
    echo ">>> Compiled vscode-test"
    cd sample
    echo ">>> Run sample integration test"
    yarn && yarn compile && yarn test
cache: yarn
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21