背景
我正在制作open-source Github Electron app用于转录视频 . 我希望我的应用程序是多平台的,所以我对MacOS和Linux(Ubuntu)使用开源travis-ci.org到build 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 matrices和build matrix expansion上提供了've read and re-read Travis-CI'的文档 . 我've also read documentation on Travis' s beta build stages功能 . 但是,我不认为我完全理解如何定义构建矩阵,然后让所有扩展的配置经历一个阶段 . 在这种情况下,定义两个操作系统,但只需要使用相同的命令编写一个阶段: yarn dist
以使可分发 . (默认情况下,该命令将为主机操作系统构建二进制文件 . )
我的预感是如何回答我的问题
我的猜测是其中一个(或多个)是真的:
-
我想要的是不可能的
-
我想要的是什么;我只需做一个小调整 .
-
我想要的是可能的,但是我这样做的尝试在很大程度上是错误的和/或误解了矩阵,工作和阶段之间的关系 .
-
我遇到了特定于电子的东西(虽然Linux的构建似乎很好)
道歉
我希望我更了解特拉维斯,感谢你的耐心和帮助 .
1 回答
您的设置对于您想要实现的目标是正确的 . 如果两个构建器不并行运行,则会发生以下两种情况之一:
您在项目中将项目的并发性设置为1(或者这是现在的默认值)blog post
在travis方面根本没有足够的免费资源来运行两者 . 这尤其适用于macOS构建,其中IIRC的构建器数量少于linux .