如何在AppVeyor/Travis CI构建中确定配置以运行对应测试程序?
搞定构建版本对应测试程序的配置问题
没问题!我帮你调整下配置,直接引用构建产物路径就能解决这个问题,分AppVeyor和Travis两种情况给你说清楚:
AppVeyor 这边这么改
你原来的配置靠两次cd切换路径,要是中间某一步出问题(比如Build目录没生成),后面的测试命令就跑不起来了。直接用完整路径调用测试程序更稳妥,而且AppVeyor自带的CONFIGURATION环境变量会自动对应你当前的Release/Debug版本。
修改后的appveyor.yml测试脚本:
test_script: # 用PowerShell的话这么写(AppVeyor默认是PowerShell) - & .\Build\$env:CONFIGURATION\UtilsTests.exe # 要是你用Cmd模式,换成下面这行 # - .\Build\%CONFIGURATION%\UtilsTests.exe
这么做的好处是不用切换目录,不管当前工作目录在哪,都能精准找到对应的测试程序,避免路径切换失败的坑。
Travis CI 这么配置更靠谱
Travis本身没有自带CONFIGURATION变量,你得在matrix里明确指定构建类型,然后用自定义变量来对应路径。另外注意macOS下的可执行文件没有.exe后缀,得区分系统来调用。
修改后的.travis.yml配置:
matrix: include: - os: osx osx_image: xcode14.3 # 把这里换成你实际用的镜像版本 env: BUILD_TYPE=Release - os: osx osx_image: xcode14.3 env: BUILD_TYPE=Debug # 要是需要Windows/Linux环境,接着往下加就行 - os: windows env: BUILD_TYPE=Release - os: windows env: BUILD_TYPE=Debug test_script: # 根据系统类型调用对应的测试程序 - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then .\Build\%BUILD_TYPE%\UtilsTests.exe; else ./Build/$BUILD_TYPE/UtilsTests; fi
解释下:
- 在每个matrix配置项里加
env: BUILD_TYPE=XXX,明确当前是Release还是Debug构建 - 测试脚本里用
TRAVIS_OS_NAME判断系统,Windows下调用带.exe的程序,macOS/Linux下调用不带后缀的版本,跨平台兼容拉满
这样配置完,每次构建都会自动匹配对应版本的测试程序,再也不用手动切换目录啦。
内容的提问来源于stack exchange,提问作者SRG
相关产品推荐
相关产品推荐

