首页 文章

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

提问于
浏览
3

背景

我正在制作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上提供了've read and re-read Travis-CI'的文档 . 我've also read documentation on Travis' s beta build stages功能 . 但是,我不认为我完全理解如何定义构建矩阵,然后让所有扩展的配置经历一个阶段 . 在这种情况下,定义两个操作系统,但只需要使用相同的命令编写一个阶段: yarn dist 以使可分发 . (默认情况下,该命令将为主机操作系统构建二进制文件 . )

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

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

  • 我想要的是不可能的

  • 我想要的是什么;我只需做一个小调整 .

  • 我想要的是可能的,但是我这样做的尝试在很大程度上是错误的和/或误解了矩阵,工作和阶段之间的关系 .

  • 我遇到了特定于电子的东西(虽然Linux的构建似乎很好)

道歉

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

1 回答

  • 3

    您的设置对于您想要实现的目标是正确的 . 如果两个构建器不并行运行,则会发生以下两种情况之一:

    • 您在项目中将项目的并发性设置为1(或者这是现在的默认值)blog post

    • 在travis方面根本没有足够的免费资源来运行两者 . 这尤其适用于macOS构建,其中IIRC的构建器数量少于linux .

相关问题