给出一个看起来像这样的异质矩阵:
matrix:
include:
- os: linux
compiler: gcc
env: PLATFORM=android ARCH=arm64-v8a
- os: linux
compiler: gcc
env: PLATFORM=linux ARCH=aarch64
- os: osx
compiler: clang
env: PLATFORM=darwin ARCH=x86_64 TEST=unit
- os: osx
compiler: clang
env: PLATFORM=ios ARCH=arm64
这将导致四个版本。我想将它乘以一个额外的环境变量TYPE=Debug/Release
。实现这种效果的最佳方法是什么?考虑到我只显示了四种配置,但配置的实际数量是15.我希望我不必复制所有内容两次。
我尝试了以下内容,但它只增加了两个版本,它没有与矩阵结合:
env:
matrix:
- TYPE=Debug
- TYE=Release
与此相同:
env:
- TYPE=Debug
- TYE=Release
答案 0 :(得分:2)
恐怕你不能。
matrix.include
中没有您可能期望的最高级别的矩阵扩展。
env
键只构成构建矩阵的一个轴,并且不可能使用不同的env
值来构建构建矩阵。
实现所需目标的唯一方法是增加四个工作岗位:
matrix:
include:
- os: linux
compiler: gcc
env: PLATFORM=android ARCH=arm64-v8a TYPE=Debug
- os: linux
compiler: gcc
env: PLATFORM=linux ARCH=aarch64 TYPE=Debug
- os: osx
compiler: clang
env: PLATFORM=darwin ARCH=x86_64 TEST=unit TYPE=Debug
- os: osx
compiler: clang
env: PLATFORM=ios ARCH=arm64 TYPE=Debug
- os: linux
compiler: gcc
env: PLATFORM=android ARCH=arm64-v8a TYPE=Release
- os: linux
compiler: gcc
env: PLATFORM=linux ARCH=aarch64 TYPE=Release
- os: osx
compiler: clang
env: PLATFORM=darwin ARCH=x86_64 TEST=unit TYPE=Release
- os: osx
compiler: clang
env: PLATFORM=ios ARCH=arm64 TYPE=Release
(顺便说一下,你在哪里得到15号?)
答案 1 :(得分:0)
我通常使用包含(jinja)模板的小python脚本来生成我的travis配置。
#!/usr/bin/env python3
tpl = '''
script:
- some_stuff.bash
matrix:
include:
{%- for letter, number in vars %}
- env: TESTS={{number}} CONFIG={{letter}}
{%- endfor %}
'''
import os
import jinja2
from itertools import product
tpl = jinja2.Template(tpl)
ymlfn = os.path.join(os.path.dirname(__file__), '.travis.yml')
with open(ymlfn, 'wt') as yml:
yml.write(tpl.render(vars=product(['a', 'b'], range(5))))