我如何让Travis-CI为多个操作系统并行构建我的电子应用程序?

时间:2017-09-12 20:09:50

标签: node.js electron travis-ci

背景

我正在使用open-source Github Electron app来转录视频。我希望我的应用程序是多平台的,因此我对MacOS和Linux(Ubuntu)使用开源travis-ci.orgbuild it,然后将二进制文件发布到Github版本。

我想要发生什么

Travis同时为OSX和Linux构建。

究竟发生了什么

使用我目前的YAML配置,Travis测试和构建串行:它首先使linux版本成为Linux版本,然后仅在Linux版本完成之后才成为mac版本。 (我相信它按照这个顺序构建,因为它是我在YAML中指定操作系统的顺序)。以下是serial build behavior

的示例

下面是我的.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

我是如何试图在我自己的

上解决这个问题的

我在build matricesbuild matrix expansion上阅读并重新阅读了Travis-CI的文档。我还阅读了有关Travis的beta build stages功能的文档。但是,我不认为我完全理解如何定义构建矩阵,然后让所有扩展配置经历一个阶段。在这种情况下,定义两个操作系统,但只需要使用相同的命令编写一个阶段:yarn dist以使可分发。 (默认情况下,该命令将为主机操作系统构建二进制文件。)

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

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

  1. 我想要的是不可能的
  2. 我想要的可能的;我只需做一个小小的调整。
  3. 我想要的 是可能的,但我尝试这样做很大程度上是错误的和/或误解了矩阵,工作和阶段之间的关系。
  4. 我遇到了一些特定于电子的东西(虽然Linux的构建似乎很顺利)
  5. 我的道歉

    我希望我更了解特拉维斯,感谢您的耐心和帮助。

1 个答案:

答案 0 :(得分:3)

您的设置对于您想要实现的目标是正确的。如果两个建设者没有并行运行,那么就会发生以下两件事之一:

  • 您在选项中将项目的并发性设置为1(或者这是当前的默认值)blog post
  • 在travis方面,根本没有足够的免费资源来运行两者。这尤其适用于macOS构建,其中IIRC的构建器数量少于linux。