我正在将 [coverity scan][1] 添加到我的项目中,但我面临配额限制的问题,因为我的 travis 构建正在使用矩阵。
我设法运行自定义 coverity 脚本(通过 build_script_url 选项)来过滤我的构建作业:
#!/bin/sh
set -e
if [[ $TRAVIS_OS_NAME != osx || $JOB != BUILD_RELEASE_JOKER ]]; then
echo "Skip build configuration: $TRAVIS_OS_NAME / $JOB"
exit 1
fi
curl -s https://scan.coverity.com/scripts/travisci_build_coverity_scan.sh | bash
我面临的问题是,如果分析配额超出,它会停止构建作业并显示以下消息:
Coverity Scan analysis selected for branch coverity.
Coverity Scan analysis NOT authorized until Fri, 08 Jan 2016 18:00:52 +0000 UTC.
第二个不好的副作用是构建作业显示为绿色,而该作业尚未运行!
最佳答案
我最近为所有项目所做的事情是,可选(取决于配额)在我的 before_script
中运行覆盖扫描:
before_script:
- autoreconf -fiv
- ./configure --disable-silent-rules
# implement Coverity Scan with before_script instead of addons.coverity_scan
# to work around too-early quota check by the coverity_scan addon
- if [[ -n $COVERITY_SCAN_PROJECT_NAME ]] ; then curl -s 'https://scan.coverity.com/scripts/travisci_build_coverity_scan.sh' | bash || true ; fi
script:
- make
这将检查我是否仍然可以向 coverity 提交新版本,如果可以,将运行 COVERITY_SCAN_BUILD_COMMAND
(这只是 make
)。如果成功,它将运行 make
再次(在 script
阶段),但由于 make 的属性,这不会有太大作用。
如果失败(因为构建失败),它也会运行 make
再次(在 script
阶段),很快就会再次失败,导致整个构建失败。
但是,如果我的覆盖配额已用完,travisci_build_coverity_scan.sh
脚本将失败,但此失败将通过 || true
转变为伪成功。
然后,在 script
阶段,该项目将使用 make
构建,最终的成功取决于这次构建的结果。
简而言之:
- 如果可能(由于配额),构建将提交给 coverity
- 如果构建成功(有或没有覆盖),travis-ci 状态将变为绿色(“构建通过”)
- 如果构建失败(有或没有覆盖),travis-ci 状态将变为红色(“构建失败”)
关于travis-ci - Travis 矩阵构建上的 Coverity 扫描,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34693018/