对每个Travis拉取请求构建运行Coverity扫描

时间:2014-11-05 14:01:38

标签: github travis-ci coverity

我想尽可能自动化学生作业评分系统。理想情况下,在提交作业时将采取这些步骤。

  1. 学生分发我的 Github 存储库并修改文件
  2. 学生将本地代码推送到他的存储库并创建拉取请求
  3. Travis CI 检测到拉取请求并运行拉取请求构建
  4. 如果代码构建成功, Coverity 会对拉取请求运行静态代码分析
  5. 学生从 Github 拉取请求页面获取构建状态
  6. 我已成功为我的回购中的每个拉取请求设置了Travis构建。我已成功通过Travis对我的回购中的每次提交进行Coverity扫描。但我无法触发Coverity扫描拉取请求,只运行Travis构建。我是否可以解决此问题并为每个拉取请求维护Coverity扫描报告?

    这是我的.travis.yml

    language: c
    compiler: gcc
    
    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: "WHkT1bLbpz8VA8tl+qyZvWHLg7YvnMPhCNXCEAQQaklcDq8HQ7glIrrs35VnTDfs09tVgkPbgsAfwBuwxqkmmxWaquW0AHdb6cefNpQVj2ovUriQVNBFmjfte9Bbq0NWKoLp+4IY/3IDfLoUOekOIDXuQtkJhNvX1zkkt21lSeo="
    
    addons:
      coverity_scan:
        project:
          name: "Freeuni-CN101-2014/midterm"
          description: "Build submitted via Travis CI"
        notification_email: example@mail.com
        build_command_prepend: ""
        build_command:   "make"
        branch_pattern: "*"
    
    script: make
    

    牵引请求的here

    的Travis输出

    将拉取请求与主分支here

    合并后的Travis输出

2 个答案:

答案 0 :(得分:2)

我问Coverity支持,他们回复了

  

Coverity Scan的触发器发生在特定分支上,而不是   对于pull请求,特别是在中提到的分支   .travis.yml

更新

在user @ Admaster的帮助下,我开始使用Jenkins和cppcheck插件。 Jenkins正在成功扫描pull请求,而没有为Github提交设置构建状态(Travis设置)。

实施例 enter image description here

所以我继续尝试Travis并来到this回购。我更改了.travis.yml文件,看起来像这样

language: c
compiler: gcc

before_install:
  - sudo apt-get install -qq cppcheck

script:
  - cppcheck --error-exitcode=1 --quiet .
  - make

cppcheck可能不如Coverity有效,但它足以让学生分配。

答案 1 :(得分:-2)

我建议不要使用Coverity,因为免费帐户有很多限制。 更好的是使用詹金斯。 我会尝试为您特别配置。 Jenkins支持github上的pull请求