我有一个需要为多个平台构建的程序.现在我做的事情如下:
matrix:
include:
env: PLATFORM=foo
env: PLATFORM=bar
env: PLATFORM=baz
before_install:
- install foo toolchain
- install bar toolchain
- install baz toolchain
script:
- make PLATFORM=$PLATFORM
Run Code Online (Sandbox Code Playgroud)
我宁愿不安装所有三个工具链,因为我只会使用一个; 当上游可怕的工具链分发站点出现故障时,它会浪费资源并打破所有构建.
但是,我无法想出一种在构建矩阵中获得before_install的方法---文档对于精确的语法非常不清楚.这是可能的,如果是的话,怎么样?
在此特定示例中,您可以简单地利用已创建的环境变量来动态扩展安装命令。
\n\nmatrix:\n include:\n env: PLATFORM=foo\n env: PLATFORM=bar\n env: PLATFORM=baz\nbefore_install:\n - install $PLATFORM toolchain\nscript:\n - make PLATFORM=$PLATFORM\nRun Code Online (Sandbox Code Playgroud)\n\n对于其他可能发现这个问题寻找更复杂场景的人,例如支持与现代 travis 环境不一致的古老平台,我使用专用脚本管理矩阵差异安装。
\n\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Foo.php\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 tests\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 FooTest.php\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 travis\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 install.bash\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 install.legacy.bash\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 script.bash\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 script.legacy.bash\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 .travis.yml\nRun Code Online (Sandbox Code Playgroud)\n\n然后为环境获取相应的脚本。
\n\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Foo.php\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 tests\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 FooTest.php\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 travis\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 install.bash\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 install.legacy.bash\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 script.bash\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 script.legacy.bash\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 .travis.yml\nRun Code Online (Sandbox Code Playgroud)\n\n相当丑陋,所以我希望 travis 能提供一个官方的解决方案。
\n| 归档时间: |
|
| 查看次数: |
1016 次 |
| 最近记录: |