"переменные окружения не заданы", когда Matrix не используется в Travis CI - PullRequest
0 голосов
/ 20 октября 2019

Мы сокращаем поддержку тестирования ARM64 на Travis CI . Мы также прекратили использовать стандартную матрицу и переключились исключительно на include:, чтобы уменьшить количество ненужных заданий. Избегание matrix: и использование include: сохраняет от 25 до 50 ненужных заданий.

Результат тестирования изменения доступен здесь . В конфигурации происходит сбой около 8 заданий с ошибкой «переменные среды не заданы» :

enter image description here

Мы думаем, что задания приходятот osx_image: xcode10.1 в .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:
  ...

1 Ответ

0 голосов
/ 21 октября 2019

Мы думаем, что задания приходят из osx_image: xcode10.1 в .travis.yml

Это было неверно. Мы удалили глобальный ключ 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:, поэтому вместо matrix.include используется jobs.includeне имеет ожидаемого эффекта. Также см. Схему Travis YML .

...