我们正在削减对基于Travis CI的ARM64测试的支持。我们也停止使用标准矩阵,转而完全使用include:来减少不必要的工作。避免使用matrix:和使用include:可以节省25到50个不必要的工作。
更改的测试结果是可用的这里。大约有8个作业在配置中失败,错误为“无环境变量集”。

我们认为这些工作来自osx_image: xcode10.1 in .travis.yml。看来,不需要的作业是osx_image应用于{Linux,OS X} x {GCC,Clang} x {amd64,arm64}的结果。
我们不知道如何停止这些工作,也不知道如何解决这些问题。
如何用“无环境变量集”故障修复作业?
以下是.travis.yml的相关部分。
language: cpp
arch:
- amd64
- arm64
os:
- linux
- osx
osx_image:
- xcode10.1
dist: xenial
sudo: required
git:
depth: 5
compiler:
- clang
- gcc
env:
global:
- BUILD_JOBS=2
- ANDROID_HOME="$HOME/android-sdk"
- ANDROID_SDK="$HOME/android-sdk"
- ANDROID_NDK="$HOME/android-ndk"
jobs:
include:
- os: linux
name: Linux with GCC (all)
arch: amd64
compiler: gcc
env:
- BUILD_OS=linux
- BUILD_MODE=all
- os: linux
name: Linux with GCC (native)
arch: amd64
compiler: gcc
env:
- BUILD_OS=linux
- BUILD_MODE=native
- os: linux
name: Linux with GCC (no-asm)
arch: amd64
compiler: gcc
env:
- BUILD_OS=linux
- BUILD_MODE=no-asm
- os: linux
name: Linux with GCC (debug)
arch: amd64
compiler: gcc
env:
- BUILD_OS=linux
- BUILD_MODE=debug
- os: linux
name: Linux with GCC (asan)
arch: amd64
compiler: gcc
env:
- BUILD_OS=linux
- BUILD_MODE=asan
- os: linux
name: Linux with GCC (ubsan)
arch: amd64
compiler: gcc
env:
- BUILD_OS=linux
- BUILD_MODE=ubsan
- os: linux
name: Linux with GCC (pem)
arch: amd64
compiler: gcc
env:
- BUILD_OS=linux
- BUILD_MODE=pem
- os: linux
name: Linux with GCC (autotools)
arch: amd64
compiler: gcc
env:
- BUILD_OS=linux
- BUILD_MODE=autotools
- os: linux
name: Linux with GCC (cmake)
arch: amd64
compiler: gcc
env:
- BUILD_OS=linux
- BUILD_MODE=cmake
- os: linux
name: Linux with Clang (all)
arch: amd64
compiler: clang
env:
- BUILD_OS=linux
- BUILD_MODE=all
- os: linux
name: Linux with Clang (native)
arch: amd64
compiler: clang
env:
- BUILD_OS=linux
- BUILD_MODE=native
- os: linux
name: Linux with Clang (no-asm)
arch: amd64
compiler: clang
env:
- BUILD_OS=linux
- BUILD_MODE=no-asm
- os: linux
name: Linux with Clang (debug)
arch: amd64
compiler: clang
env:
- BUILD_OS=linux
- BUILD_MODE=debug
- os: linux
name: Linux with Clang (asan)
arch: amd64
compiler: clang
env:
- BUILD_OS=linux
- BUILD_MODE=asan
- os: linux
name: Linux with Clang (ubsan)
arch: amd64
compiler: clang
env:
- BUILD_OS=linux
- BUILD_MODE=ubsan
- os: linux
name: Linux with Clang (pem)
arch: amd64
compiler: clang
env:
- BUILD_OS=linux
- BUILD_MODE=pem
- os: linux
name: Linux with Clang (autotools)
arch: amd64
compiler: clang
env:
- BUILD_OS=linux
- BUILD_MODE=autotools
- os: linux
name: Linux with Clang (cmake)
arch: amd64
compiler: clang
env:
- BUILD_OS=linux
- BUILD_MODE=cmake
- os: osx
name: OS X with Clang (all)
arch: amd64
compiler: clang
env:
- BUILD_OS=osx
- BUILD_MODE=all
- os: osx
name: OS X with Clang (native)
arch: amd64
compiler: clang
env:
- BUILD_OS=osx
- BUILD_MODE=native
- os: osx
name: OS X with Clang (no-asm)
arch: amd64
compiler: clang
env:
- BUILD_OS=osx
- BUILD_MODE=no-asm
- os: osx
name: OS X with Clang (debug)
arch: amd64
compiler: clang
env:
- BUILD_OS=osx
- BUILD_MODE=debug
- os: osx
name: OS X with Clang (asan)
arch: amd64
compiler: clang
env:
- BUILD_OS=osx
- BUILD_MODE=asan
- os: osx
name: OS X with Clang (ubsan)
arch: amd64
compiler: clang
env:
- BUILD_OS=osx
- BUILD_MODE=ubsan
- os: osx
name: OS X with Clang (pem)
arch: amd64
compiler: clang
env:
- BUILD_OS=osx
- BUILD_MODE=pem
- os: osx
name: OS X with Clang (autotools)
arch: amd64
compiler: clang
env:
- BUILD_OS=osx
- BUILD_MODE=autotools
- os: osx
name: OS X with Clang (cmake)
arch: amd64
compiler: clang
env:
- BUILD_OS=osx
- BUILD_MODE=cmake
- os: linux
name: Linux with GCC (all)
arch: arm64
compiler: gcc
env:
- BUILD_OS=linux
- BUILD_MODE=all
- os: linux
name: Linux with GCC (native)
arch: arm64
compiler: gcc
env:
- BUILD_OS=linux
- BUILD_MODE=native
- os: linux
name: Linux with GCC (no-asm)
arch: arm64
compiler: gcc
env:
- BUILD_OS=linux
- BUILD_MODE=no-asm
- os: linux
name: Linux with GCC (debug)
arch: arm64
compiler: gcc
env:
- BUILD_OS=linux
- BUILD_MODE=debug
- os: linux
name: Linux with GCC (asan)
arch: arm64
compiler: gcc
env:
- BUILD_OS=linux
- BUILD_MODE=asan
- os: linux
name: Linux with GCC (ubsan)
arch: arm64
compiler: gcc
env:
- BUILD_OS=linux
- BUILD_MODE=ubsan
- os: linux
name: Linux with GCC (pem)
arch: arm64
compiler: gcc
env:
- BUILD_OS=linux
- BUILD_MODE=pem
- os: linux
name: Linux with GCC (autotools)
arch: arm64
compiler: gcc
env:
- BUILD_OS=linux
- BUILD_MODE=autotools
- os: linux
name: Linux with GCC (cmake)
arch: arm64
compiler: gcc
env:
- BUILD_OS=linux
- BUILD_MODE=cmake
- os: linux
name: Linux with Clang (all)
arch: arm64
compiler: clang
env:
- BUILD_OS=linux
- BUILD_MODE=all
- os: linux
name: Linux with Clang (native)
arch: arm64
compiler: clang
env:
- BUILD_OS=linux
- BUILD_MODE=native
- os: linux
name: Linux with Clang (no-asm)
arch: arm64
compiler: clang
env:
- BUILD_OS=linux
- BUILD_MODE=no-asm
- os: linux
name: Linux with Clang (debug)
arch: arm64
compiler: clang
env:
- BUILD_OS=linux
- BUILD_MODE=debug
- os: linux
name: Linux with Clang (asan)
arch: arm64
compiler: clang
env:
- BUILD_OS=linux
- BUILD_MODE=asan
- os: linux
name: Linux with Clang (ubsan)
arch: arm64
compiler: clang
env:
- BUILD_OS=linux
- BUILD_MODE=ubsan
- os: linux
name: Linux with Clang (pem)
arch: arm64
compiler: clang
env:
- BUILD_OS=linux
- BUILD_MODE=pem
- os: linux
name: Linux with Clang (autotools)
arch: arm64
compiler: clang
env:
- BUILD_OS=linux
- BUILD_MODE=autotools
- os: linux
name: Linux with Clang (cmake)
arch: arm64
compiler: clang
env:
- BUILD_OS=linux
- BUILD_MODE=cmake
- os: linux
name: Android on Linux (armeabi-v7a)
arch: amd64
env:
- BUILD_OS=linux
- BUILD_MODE=android
- PLATFORM=armeabi-v7a
- os: linux
name: Android on Linux (aarch64)
arch: amd64
env:
- BUILD_OS=linux
- BUILD_MODE=android
- PLATFORM=aarch64
- os: linux
name: Android on Linux (x86)
arch: amd64
env:
- BUILD_OS=linux
- BUILD_MODE=android
- PLATFORM=x86
- os: linux
name: Android on Linux (x86_64)
arch: amd64
env:
- BUILD_OS=linux
- BUILD_MODE=android
- PLATFORM=x86_64
- os: osx
name: iOS on OS X (iPhoneOS)
arch: amd64
env:
- BUILD_OS=osx
- BUILD_MODE=ios
- PLATFORM=iPhoneOS
- os: osx
name: iOS on OS X (Arm64)
arch: amd64
env:
- BUILD_OS=osx
- BUILD_MODE=ios
- PLATFORM=Arm64
- os: osx
name: iOS on OS X (WatchOS)
arch: amd64
env:
- BUILD_OS=osx
- BUILD_MODE=ios
- PLATFORM=WatchOS
- os: osx
name: iOS on OS X (AppleTVOS)
arch: amd64
env:
- BUILD_OS=osx
- BUILD_MODE=ios
- PLATFORM=AppleTVOS
- os: osx
name: iOS on OS X (iPhoneSimulator)
arch: amd64
env:
- BUILD_OS=osx
- BUILD_MODE=ios
- PLATFORM=iPhoneSimulator
- os: osx
name: iOS on OS X (WatchSimulator)
arch: amd64
env:
- BUILD_OS=osx
- BUILD_MODE=ios
- PLATFORM=WatchSimulator
- os: osx
name: iOS on OS X (AppleTVSimulator)
arch: amd64
env:
- BUILD_OS=osx
- BUILD_MODE=ios
- PLATFORM=AppleTVSimulator
allow_failures:
- os: osx
name: iOS on OS X (WatchOS)
env:
- BUILD_OS=osx
- BUILD_MODE=ios
- PLATFORM=WatchOS
- os: osx
name: iOS on OS X (iPhoneSimulator)
env:
- BUILD_OS=osx
- BUILD_MODE=ios
- PLATFORM=iPhoneSimulator
before_install:
- |
...
script:
- |
...
branches:
...
notifications:
...发布于 2019-10-21 04:03:50
我们认为这些工作来自于osx_image:.travis.yml中的xcode10.1
这是不正确的。我们删除了全局密钥osx_image,但问题仍然存在。
但我们仍然不太明白,除了matrix:扩张带来的副产品之外,就业岗位是从哪里来的,这是我们试图避免的。
如何用“无环境变量集”故障修复作业?
解决方法是摆脱matrix:扩展,但它并不是容易获得的信息。这一点肯定没有在文件中说过。或者我们在文档里找不到它。
为了避免matrix:扩展,请去掉env、arch、os、compiler的所有全局键。洞察力在于,全局键触发了矩阵的扩展。矩阵展开不依赖于matrix:或jobs:键的存在。
我们得到的yml文件如下所示。我们必须手动构建{env} x {arch} x {os} x {compiler}的交叉产品(我们已经在这样做)。
language: cpp
dist: xenial
sudo: required
git:
depth: 5
jobs:
include:
- os: linux
name: Linux with GCC (all)
arch: amd64
compiler: gcc
env:
- BUILD_OS=linux
- BUILD_MODE=all
- BUILD_JOBS=2
- os: linux
name: Linux with GCC (native)
arch: amd64
compiler: gcc
env:
- BUILD_OS=linux
- BUILD_MODE=native
- BUILD_JOBS=2
- os: linux
name: Linux with GCC (no-asm)
arch: amd64
compiler: gcc
env:
- BUILD_OS=linux
- BUILD_MODE=no-asm
- BUILD_JOBS=2
- os: linux
name: Linux with GCC (debug)
arch: amd64
compiler: gcc
env:
- BUILD_OS=linux
- BUILD_MODE=debug
- BUILD_JOBS=2
- os: linux
name: Linux with GCC (asan)
arch: amd64
compiler: gcc
env:
- BUILD_OS=linux
- BUILD_MODE=asan
- BUILD_JOBS=2
- os: linux
name: Linux with GCC (ubsan)
arch: amd64
compiler: gcc
env:
- BUILD_OS=linux
- BUILD_MODE=ubsan
- BUILD_JOBS=2
- os: linux
name: Linux with GCC (pem)
arch: amd64
compiler: gcc
env:
- BUILD_OS=linux
- BUILD_MODE=pem
- BUILD_JOBS=2
- os: linux
name: Linux with GCC (autotools)
arch: amd64
compiler: gcc
env:
- BUILD_OS=linux
- BUILD_MODE=autotools
- BUILD_JOBS=2
- os: linux
name: Linux with GCC (cmake)
arch: amd64
compiler: gcc
env:
- BUILD_OS=linux
- BUILD_MODE=cmake
- BUILD_JOBS=2
...jobs:是matrix:的别名,所以使用jobs.include而不是matrix.include并不会产生预期的效果。还可以看到Travis YML模式。
https://stackoverflow.com/questions/58473000
复制相似问题