如何突破 travis-ci 的 50 分钟超时限制?

几个月来都在 travis-ci 上编译 emacs native-comp,一直都很顺利,直到今天把 native-comp 分支代码更新到 9420ea6e0840bffcb140d3677dfdabb9251c1f63

重试好几次,每次到 50 分钟就被强行结束:

⋊> [~/.r/nix-gccemacs-sierra] tail log.txt
 ELC+ELN   calc/calc-lang.elc
 ELC+ELN   calc/calc-macs.elc
 ELC+ELN   calc/calc-map.elc
 ELC+ELN   calc/calc-math.elc
 ELC+ELN   calc/calc-menu.elc
 ELC+ELN   calc/calc-misc.elc


The job exceeded the maximum time limit for jobs, and has been terminated.

50 分钟是 travis-ci 对单个任务的最大超时限制,唯一的解决方案可能是把任务拆分成多段 (stage)。

目前的 .travis.yml

language: nix
rvm: system
os: osx

matrix:
  include:
    - env: OSX=10.12
      compiler: clang
      osx_image: xcode9.2

install:
  - ./install.sh

script:
  - nix-env -iA cachix -f https://cachix.org/api/v1/install
  - cachix use gccemacs-sierra
  - if [ -n "$CACHIX_SIGNING_KEY" ]; then cachix push gccemacs-sierra --watch-store; fi &
  - nix-build -A emacsGccSierra | cachix push gccemacs-sierra

其中比较费时步骤的是:1. install.sh(安装 nix),2. nix-build -A emacsGccSierra(编译 Emacs),尤其第 2. 步。

从日志来看,才编译到 C 字头的包就超时了,难道要把 Emacs 编译过程拆分成多步(1.开始编译直到B字头的包截止,2.继续编译C字头及其后面的包,… ),这可行吗?

Github Actions CI开源项目单次运行上限为6小时

另外编译变慢的原因可能是因为Andrea加了一个类型推断系统

akrl.sdf.org/gccemacs.html#orgd2ff3f2

github actions 不提供 macOS Sierra 编译环境。

我找找看能否迁移到其它平台。

将install 的内容做个中间的image, 然后基于新的image进行build。

刚刚登录 Travis CI,发现我的免费 credits 已用完。无需再纠结了。

一个 macOS image 成本很高,不见得有助于减少任务时间:GitHub - sickcodes/Docker-OSX: Run macOS VM in a Docker! Run near native OSX-KVM in Docker! X11 Forwarding! CI/CD for OS X Security Research! Docker mac Containers.