使用 Electron 时 GitHub Actions 执行失败

Devrsi0n • 
更新于 

GitHub Actions 是 GitHub 官方近期推出的免费自动化软件开发流程服务,可用来替代 circleci/travis 这类第三方服务,而且因为榜上微软这个金主,GitHub 的官方服务构建速度和易用度都挺不错的。比如下面著名 iOS 大神 onevcat 使用感受:

onevcat

GitHub Actions 看着虽好,但在第一次尝试就遇到了问题,测试用例直接跑不起来,相关症状如下。

failed

经过深入分析,发现项目的 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 testuses: bcomnes/cleanup-xvfb@v1。前面2个不用说了,最后一个是清除 xvfb 开启的进程,免得对环境造成影响,具体使用参考 Cleanup xvfb 这个 Action。

yaml
1name: Node CI
2
3on: [push]
4
5jobs:
6 build:
7
8 runs-on: ubuntu-latest
9
10 strategy:
11 matrix:
12 node-version: [10.x, 12.x]
13
14 steps:
15 - uses: actions/checkout@v1
16 - name: Use Node.js ${{ matrix.node-version }}
17 uses: actions/setup-node@v1
18 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/47
21 - run: sudo apt-get install xvfb
22 - name: yarn install, build, and test
23 run: |
24 yarn
25 yarn run build
26 xvfb-run --auto-servernum yarn test
27 env:
28 CI: true
29 - name: Cleanup xvfb pidx
30 # 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 配置。

在 GitHub 上编辑此文

其他文章

前端单测 jest 运行环境 - electron

选择最优的 jest 运行环境

2019-10-25
© 2019 – 2020 devrsi0n
Link to $https://bit.ly/2NcAZQZLink to $https://github.com/devrsi0nLink to $https://weibo.com/qianmofeiyu