GitHub Actions 是 GitHub 官方近期推出的免费自动化软件开发流程服务,可用来替代 circleci/travis 这类第三方服务,而且因为榜上微软这个金主,GitHub 的官方服务构建速度和易用度都挺不错的。比如下面著名 iOS 大神 onevcat 使用感受:
GitHub Actions 看着虽好,但在第一次尝试就遇到了问题,测试用例直接跑不起来,相关症状如下。
经过深入分析,发现项目的 jest 使用 electron renderer 进程作为测试环境(详情请看前端单测 jest 最佳运行环境),本地测试没问题,但在无显示环境的服务器上 electron 就不能正常工作了。相关 GitHub issue: It’s not working in Gitlab CI Server。
从 issue 作者的回复看,electron 要在 GitHub Actions 这类无显示服务器环境运行需要提供虚拟显示,一般由 xvfb
这个 Linux 包提供。
解决办法
解决办法就是安装相应的 Linux 依赖,执行测试用例前开启虚拟现实环境,下面是项目 GitHub Actions 配置,供参考。重点是这3个配置: - run: sudo apt-get install xvfb
, xvfb-run --auto-servernum yarn test
和 uses: bcomnes/cleanup-xvfb@v1
。前面2个不用说了,最后一个是清除 xvfb
开启的进程,免得对环境造成影响,具体使用参考 Cleanup xvfb 这个 Action。
yaml1name: Node CI23on: [push]45jobs:6 build:78 runs-on: ubuntu-latest910 strategy:11 matrix:12 node-version: [10.x, 12.x]1314 steps:15 - uses: actions/checkout@v116 - name: Use Node.js ${{ matrix.node-version }}17 uses: actions/setup-node@v118 with:19 node-version: ${{ matrix.node-version }}20 # Setup a virtual display for running electron, @see https://github.com/facebook-atom/jest-electron-runner/issues/4721 - run: sudo apt-get install xvfb22 - name: yarn install, build, and test23 run: |24 yarn25 yarn run build26 xvfb-run --auto-servernum yarn test27 env:28 CI: true29 - name: Cleanup xvfb pidx30 # Clean up any remaining xvfb processes leftover in a Github Action.31 uses: bcomnes/cleanup-xvfb@v1
Extra
可能你用 circleci 也遇到了这个问题,可以参考 jest-electron-runner 这里的配置代码。travis 参考 jest-electron 配置。