Как настроить сканирование покрытия на GitHub с помощью TravisCI?

Мне удалось настроить TravisCI для моего C++, размещенного на Github project, все работает.
Я хотел бы перейти к статическому анализу моего кода C++ с помощью Coverity Scan.
Автоматическая загрузка с помощью TravisCI в Scan Coverity возможна, но я не могу найти способ заставить ее работать.

Мой git-репозиторий простой, есть две ветки: master и coverity_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 несколько надстроек генерируют ошибки, обрабатывается только последняя запись. С другой стороны, coverity_scan, кажется, собирается без проблем (мне нужно установить более свежие версии g++, это связано с функциями C++11).

Изменить 20150910:
Я объединил оба раздела addons, и это работает.
Но я все еще застрял на шаге «Отправлена ​​первая сборка».
Я также изменил COVERITY_SCAN_TOKEN, но это все равно не отправляет сборку на Coverity Scan < href="https://travis-ci.org/LeFlou/Citadel/builds/79745175" rel="nofollow noreferrer">сборка TravisCI с этими изменениями


person Richard Dally    schedule 03.09.2015    source источник
comment
Как это выглядит, когда вы входите в систему scan.coverity.com?   -  person Chris Beck    schedule 04.09.2015
comment
@ChrisBeck, сейчас я застрял на первом шаге сборки.   -  person Richard Dally    schedule 04.09.2015


Ответы (3)


Я думаю, что ваша проблема в build_command_prepend, это cmake ., а не cmake.

person ricarline    schedule 11.09.2015

Я думаю, проблема может заключаться в том, что вы указали ветку, которую используете, как coverity_scan здесь:

    branch_pattern: coverity_scan

но вы сказали, что нажимаете на ветку scan_coverity. Так что вы можете вместо этого попробовать нажать на coverity_scan?

person Chris Beck    schedule 03.09.2015
comment
К сожалению это моя ошибка, я везде использую coverity_scan, я отредактировал свой пост. - person Richard Dally; 04.09.2015

У меня тоже были проблемы, но в итоге все заработало.

Сначала перейдите в настройки проекта в Coverity. Скопируйте токен

Установите 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
person andy5995    schedule 29.04.2021