如何使用 TravisCI 在 GitHub 上设置 Coverity Scan?

How to setup Coverity Scan on GitHub with TravisCI?

我已经成功设置 TravisCI for my C++ hosted on Github project,它工作正常。
我想继续使用 Coverity Scan.
对我的 C++ 代码进行静态分析 可以使用 TravisCI 自动上传到 Scan Coverity,但我找不到让它工作的方法。

我的git仓库很简单,有两个分支:mastercoverity_scan

为了避免在每次推送时触发静态分析,所有与 Scan Coverity 相关的内容都填写在 coverity_scan 分支:

language: cpp

env:
  global:
   # The next declaration is the encrypted COVERITY_SCAN_TOKEN, created
   #   via the "travis encrypt" command using the project repo's public key
   - secure: "UEHXnbNPk49F6Ta/+d+UZl74EhtIevExwCo1l6qBndw+LvIXQDNSfsFiIJsZVfSgacBEOtd7CSY6rtccDpGeS9oX5/G/pnCz/2Cu+NOCCWlpy/S3qcUtdz52nMVatTgRhEi14WfrghpHk7nxxSi1W5+VIBfew+In11V1Xln3W06hhGOOK17Ljik18LbjSY1K9yVwK60r3tzwzSBMm/MArsqCeigzw15c0THQUtLlaLg/5nfP31f1QV9W1WlF4zIHjzd0970M385vNDDPyG+qRCfMPDEJrWb9/hJVi5x2poHLDObSE25rSQqfzc5nfiSDbH888mkdbBZXSwMVveVEhufyEk0nxI0Tddh/WNYFs+7g1gyV9409Tj288Omx++zpb0jM7/++wgkRwvBnqfBN7GWxoZJ9rHTxauJ+IIOR1jvskCTFMFMLI3C1+IpT4SgV0i6v2PtRsdGbXgI9qywhmPEjC+lS6Nu/rZQItr27rZowvw1ITYwJrDX4YQOAZxJkYNLFdGfqEMSjx0nfq6Kpl/4PaHQ7X0OtnJNgssMk3LNcYEwV1tLhTt+qODONjB7yWilcsWo8yVurr4vnFS2nIV7N4XgBvJcZHWfovxiQhfJU2UQxDvCYlDJ0RpM8kxpze+LR2vh+BbYOgPcr7YKG9MoAbsQXDGiF7yTz1VjVQr4="

addons:
  coverity_scan:
    project:
      name: LeFlou/Citadel
    build_command_prepend: "cmake"
    build_command: "make"
    branch_pattern: coverity_scan
  apt:
    sources:
    - ubuntu-toolchain-r-test
    packages:
    - gcc-4.8
    - g++-4.8
    - clang

compiler:
  - gcc
  - clang

before_script:
  - cmake .

script:
  - make

install:
# Use g++4.8 and not 4.6 (C++11 missing)
  - if [ "$CXX" = "g++" ]; then export CXX="g++-4.8" CC="gcc-4.8"; fi

branches:
  only:
    - coverity_scan

我只想在推送到 coverity_scan 时触发静态分析,而不是在 TravisCI 上构建。
但是,持续集成必须在 master 分支上工作。

目前,代码仅构建但从未上传到 Coverity Scan
我的配置有什么问题?

编辑:
我注意到 TravisCI validator 多个插件生成错误,只处理最后一个条目。另一方面,coverity_scan 似乎可以轻松构建(我需要 apt 安装更新版本的 g++,这与 C++11 功能有关)。

编辑 20150910:
我合并了两个 addons 部分,这有效。
但我仍然停留在 "Submitted first build" 步骤。
我也更改了 COVERITY_SCAN_TOKEN,但仍然没有将构建提交到 Coverity Scan TravisCI build with these changes

我认为问题可能在于您在此处将您正在使用的分支指定为 coverity_scan:

    branch_pattern: coverity_scan

但是你说你要推送到分支scan_coverity。所以您可能想尝试推送到 coverity_scan

我认为您的问题出在 build_command_prepend,是 cmake . 而不是 cmake

我也遇到了麻烦,但最终成功了。

首先转到 Coverity 中的“项目设置”。复制令牌

Install the travis gem 本地。

然后运行:

travis encrypt -r <coverity_project_name> COVERITY_SCAN_TOKEN=<token>

对于“coverity_project_name”,请使用 Coverity 仪表板中显示的名称。

您需要将'travis encrypt'生成的密钥放入“安全”字段。所以你应该结束这样的事情:

- os: linux
  dist: bionic
  compiler: gcc
  env:
    - secure: "key generated by travis -r"
  before_install:
    - echo -n | openssl s_client -connect scan.coverity.com:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | sudo tee -a /etc/ssl/certs/ca-
  addons:
    coverity_scan:
      project:
        name: "theimpossibleastronaut/rmw"
        description: "Console recycle bin written in C"
      notification_email:
      build_command_prepend: "./configure"
      build_command: "make"
      branch_pattern: coverity_scan