我怎样才能让Travis-CI并行地为多个操作系统构build我的电子应用程序?

背景

我工作在一个开源的Github电子应用程序转录video。 我希望我的应用程序是多平台的,所以我使用开源的travis-ci.org为MacOS和Linux(Ubuntu) 构build它 ,然后将二进制文件发布到Github发行版。

我想要发生什么

Travis同时为OSX和Linux构build。

究竟发生了什么

使用我当前的YAMLconfiguration,Travis会进行串行testing和构build:首先是Linux版本,然后是Linux版本完成后的Mac版本。 (我相信这是按照顺序构build的,因为这是我在YAML中指定操作系统的顺序)。 这是一个串行构build行为的例子

下面是我的.travis.yml ,不包括我的Github访问令牌:

 language: node_js node_js: - '8' matrix: include: - os: linux dist: xenial sudo: required - os: osx cache: yarn: true notifications: email: false script: - yarn dist deploy: provider: releases api_key: $ENCRYPTED_GITHUB_TOKEN skip_cleanup: true on: tags: true 

我怎么试着自己解决这个问题

我已经阅读并重新阅读了Travis-CI关于构buildmatrix的文档并构build了matrix扩展 。 我也读过关于Travis的beta build阶段function的文档。 但是,我不认为我完全理解如何定义构buildmatrix,然后将所有展开的configuration都通过一个阶段。 在这种情况下,定义两个操作系统,但只需要使用相同的命令写一个阶段: yarn dist来实现可分配。 (默认情况下,该命令将为主机操作系统构build一个二进制文件。)

我的预感如何回答我的问题

我的猜测是,其中一个(或更多)是真实的:

  1. 我想要的是不可能的
  2. 我想要的可能的; 我只需要做一些小小的调整。
  3. 我想要的可能的,但是我的尝试很大程度上是错误的,并且/或者误解了matrix,工作和阶段之间的关系。
  4. 我遇到一些电子专用的(虽然Linux的构build看起来很好)

我很抱歉

我希望我能更好地理解特拉维斯,我感谢你的耐心和你的帮助。

你的设置是正确的,你想达到什么目的。 如果两个build设者不能平行运行,就会发生以下两件事情之一:

  • 您在项目中将项目的并发性设置为1(或者这是现在的默认设置) 博客文章
  • 在那个时候运行两个都没有足够的免费资源。 这尤其可能与macOS版本相关,在这个版本中,IIRC的构build者比linux要less得多。