3

我正在将 [coverity scan][1] 添加到我的项目中,但我面临配额限制的问题,因为我的 travis 构建使用的是矩阵。

我设法运行自定义覆盖脚本(通过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.

第二个不好的副作用是构建作业显示为绿色,而该作业尚未运行

4

1 回答 1

2

我为我最近的所有项目所做的是,可选地(取决于配额)在我的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,最终成功取决于此构建的结果。

简而言之:

  • 如果可能(由于配额),构建将提交给覆盖
  • 如果构建成功(有或没有覆盖),travis-ci 状态将变为绿色(“构建通过”)
  • 如果构建失败(有或没有覆盖),travis-ci 状态将变为红色(“构建失败”)
于 2016-05-02T21:13:04.750 回答