首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未在Travis CI上使用矩阵时“无环境变量集”

未在Travis CI上使用矩阵时“无环境变量集”
EN

Stack Overflow用户
提问于 2019-10-20 12:30:49
回答 1查看 118关注 0票数 0

我们正在削减对基于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的相关部分。

代码语言:javascript
复制
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:
  ...
EN

回答 1

Stack Overflow用户

发布于 2019-10-21 04:03:50

我们认为这些工作来自于osx_image:.travis.yml中的xcode10.1

这是不正确的。我们删除了全局密钥osx_image,但问题仍然存在。

但我们仍然不太明白,除了matrix:扩张带来的副产品之外,就业岗位是从哪里来的,这是我们试图避免的。

如何用“无环境变量集”故障修复作业?

解决方法是摆脱matrix:扩展,但它并不是容易获得的信息。这一点肯定没有在文件中说过。或者我们在文档里找不到它。

为了避免matrix:扩展,请去掉envarchoscompiler的所有全局键。洞察力在于,全局键触发了矩阵的扩展。矩阵展开不依赖于matrix:jobs:键的存在。

我们得到的yml文件如下所示。我们必须手动构建{env} x {arch} x {os} x {compiler}的交叉产品(我们已经在这样做)。

代码语言:javascript
复制
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模式

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58473000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档