我怎样才能让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一个二进制文件。)
我的预感如何回答我的问题
我的猜测是,其中一个(或更多)是真实的:
- 我想要的是不可能的
- 我想要的是可能的; 我只需要做一些小小的调整。
- 我想要的是可能的,但是我的尝试很大程度上是错误的,并且/或者误解了matrix,工作和阶段之间的关系。
- 我遇到一些电子专用的(虽然Linux的构build看起来很好)
我很抱歉
我希望我能更好地理解特拉维斯,我感谢你的耐心和你的帮助。
你的设置是正确的,你想达到什么目的。 如果两个build设者不能平行运行,就会发生以下两件事情之一:
- 您在项目中将项目的并发性设置为1(或者这是现在的默认设置) 博客文章
- 在那个时候运行两个都没有足够的免费资源。 这尤其可能与macOS版本相关,在这个版本中,IIRC的构build者比linux要less得多。