持续集成

插件测试也可以用诸如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 机器上,我们的配置文件非常简单:

  1. trigger:
  2. - master
  3. strategy:
  4. matrix:
  5. linux:
  6. imageName: "ubuntu-16.04"
  7. mac:
  8. imageName: "macos-10.13"
  9. windows:
  10. imageName: "vs2017-win2016"
  11. pool:
  12. vmImage: $(imageName)
  13. steps:
  14. - task: NodeTool@0
  15. inputs:
  16. versionSpec: "8.x"
  17. displayName: "Install Node.js"
  18. - bash: |
  19. /usr/bin/Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
  20. echo ">>> Started xvfb"
  21. displayName: Start xvfb
  22. condition: and(succeeded(), eq(variables['Agent.OS'], 'Linux'))
  23. - bash: |
  24. echo ">>> Compile vscode-test"
  25. yarn && yarn compile
  26. echo ">>> Compiled vscode-test"
  27. cd sample
  28. echo ">>> Run sample integration test"
  29. yarn && yarn compile && yarn test
  30. displayName: Run Tests
  31. env:
  32. DISPLAY: ":99.0"

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

pipelines

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

Travis CI


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

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