运行环境为centos 5.8
1.下载tomcat,并解压
2.下载jenkins,把jenkins.war放到tomcat的webapp目录下
3.在tomcat的bin目录下执行./startup.sh
4.下载gcovr
      gcovr在解压后的script目录里
5.下载cppncss
      cppncss 在bin目录里
6.下载cppcheck
      解压后,运行make
7.在jenkins里面下载cppcheck,cppncss, Cobertura(for gcovr),junit(for gtest),github,git插件
       在 jenkins的系统设置里面,git的设置里面的安装目录写git程序所在位置,比如git在/usr/local,那么输入/usr/local/git, github的设置选择 Let Jenkins auto-manage hook URLs,输入username和password(github的账号)
     在项目的设置中,在 GitHub project设置中设置项目关联的github项目地址https://xxx,在源码管理里面设置git选项,在 Repository URL输入框里输入github项目地址。并勾选 Build when a change is pushed to GitHub
8.集成gtest
  下载getst,解压
  执行g++ -I${GTEST_DIR}/include -I${GTEST_DIR} -c ${GTEST_DIR}/src/gtest-all.cc
  ar -rv libgtest.a gtest-all.o
   在makefile里面
   -I$(GTESTDIR)/include
  -lgtest
  -L$(GTESTDIR)
9.主文件
#include<gtest/gtest.h>
intmain(int argc, char* argv[])
{
    testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();//运行所有测试案例
}


测试文件
#include<gtest/gtest.h>
TEST(CAppToolsTest, handleZeroInput)
{
     ASSERT_EQ(1, 1);
}


测试输出
./1.out --gtest_output=xml:gtestreport.xml

10.下载tinyxml
运行make
然后运行
ar -rcs libtinyxml.a tinyxmlparser.o tinyxmlerror.o tinyxml.o tinystr.o生成tinyxml库

11.生成各种报告的脚本buildcc.sh
BuildPath=./dist
TinyXML=/home/pc01/Source/c++/ tinyxml
CPPCheckReport=cppcheckreport.xml
CPPCheckApp=/home/pc01/Source/c++/cppcheck-1.59/cppcheck
CPPNCSSReport=cppncssreport.xml
CPPNCSSApp=/home/pc01/Source/c++/cppncss-1.0.3/bin/cppncss
GCOVReport=gcovreport.xml
GCOVRApp=/home/pc01/Source/ gcovr

SRCDir=./src
RunPath=$BuildPath

GTestReport=gtestreport.xml

echo "clean vod server"
make clean
rm *.gcov > /dev/null
rm $CPPCheckReport > /dev /null
rm -r -f ./cppncss
rm $GCOVReport > /dev /null
rm $GTestReport > /dev /null  

echo "make vod server"
make buildtest

if [ -r "$BuildPath" ]; then
     echo "Make Success"
     echo "Make CPPCheck Report $CPPCheckReport"
      $CPPCheckApp -v --enable=all --xml -I $TinyXML $SRCDir  2> $CPPCheckReport

     echo "Make CPPNCSS Report $CPPNCSSReport"
      mkdir ./cppncss > /dev/null
      $
CPPNCSSApp
 
-r -v -x -k -f=./
cppncss 
/$CPPNCSSReport $SRCDir
     
     echo "Run Test Program, Make Test Report"
     $RunPath/vodservertest.out --gtest_output=xml:$GTestReport > /dev /null
     
     echo "Make GCovr"
     $GCOVRApp -x -r . > $GCOVReport
else
     echo "Make Fail!"
fi

12.网页访问jenkins
  • 新建job


  • 配置svn




  • 配置构建触发条件




  • 配置构建触发执行动作,将执行生成报告脚本



  • 设置构建后操作






  • 构建效果








jenkins下搭建c++持续集成环境的更多相关文章

  1. 使用Jenkins+Calabash+Cocoapods搭建iOS持续集成环境

    使用jenkins+calabash+cocoapods搭建ios持续集成环境 持续集成 持续集成到底是什么呢?依据敏捷大师Martin Fowler的定义: 持续集成是一种软件开发实践. 在持续集成 ...

  2. Jenkins+MSbuild+SVN实现快速搭建.net持续集成环境(构建、编辑、部署到服务器)

    Jenkins是一个可扩展的持续集成引擎,Jenkins非常易于安装和配置,简单易用,下面开始搭建.net持续集成环境 Jenkins和SVN安装这里就不介绍了 一.准备工作 1.Jenkins中系统 ...

  3. Net 项目构建基于Jenkins + Github + Mono 的持续集成环境

    Net 项目构建基于Jenkins + Github + Mono 的持续集成环境 阅读目录 1 安装 2 配置 3 测试 在Redhat enterprise 6.5 的服务器上,为在gutub 上 ...

  4. Jenkins Jenkins结合GIT Maven持续集成环境配置

    Jenkins结合GIT Maven持续集成环境配置   by:授客 QQ:1033553122 安装Git插件 1 安装Git客户端 1 安装JAVA JDK及MAVEN 2 Jenkins JDK ...

  5. 使用VSTS/TFS搭建iOS持续集成环境

    TFS 自2015版开始支持跨平台的持续集成环境,通过提供开源的build agent为 Windows / linux / macOS 提供了统一的持续集成环境管理能力.这篇文章给大家介绍一下如何使 ...

  6. 在Redhat上为.Net 项目构建基于Jenkins + Github + Mono 的持续集成环境

    在Redhat enterprise 6.5 的服务器上,为在gutub 上的 .net 项目构建一个持续集成环境,用到了Jenkins和mono.因公司的服务器在内网,访问外网时要通过代理,所以在很 ...

  7. Jenkins+Maven+Gitlab+Nexus持续集成环境搭建

      1.软件及服务介绍 Jenkins:jenkins是实现代码自动化流程上线的工具,Jenkins是一个独立的开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个 ...

  8. Jenkins + svn + maven 构建持续集成环境搭建

    Jenkins简介 Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括: ...

  9. Jenkins+Maven+Sonar系统持续集成环境部署以及配置

    一.Jenkins介绍以及安装 什么是持续集成?   随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Ag ...

随机推荐

  1. HTML5 直播技术

    https://segmentfault.com/a/1190000010440054

  2. tiny4412 ubuntudesktop更新源(old)

    1.报错:404  Not Found [IP: 91.189.88.151 80] 2. deb http://old-releases.ubuntu.com/ubuntu/ raring main ...

  3. set集合操作【python】

    set集合操作包括: >>> x=set("123defj89") >>> y=set("ab34e6jh9") >& ...

  4. mysq对存在null值的字段排序

    1.建立学生表,建表sql如下: ),age int); 2.插入几条数据,包括id字段值为null的 ,),(,),(,),(),(); 3.我们查询下,可以看到存在id字段为空的值: 4.对学生表 ...

  5. 一个java源文件中是否可以包括多个类(非内部类)?有何限制?

    可以有多个类,但只能有一个public的类,并且public的类名必须与文件名一致.

  6. 互斥锁mutex

    https://blog.csdn.net/rqc112233/article/details/50015069 //g++ mute.cpp -o mute -g -lrt -lpthread #i ...

  7. PHP遍历文件夹及子文件夹所有文件(此外还有飞递归的方法)

    <html> <body> <?php function traverse($path = '.') { $current_dir = opendir($path); / ...

  8. String() 函数把对象的值转换为字符串。

    var test1 = new Boolean(1);var test2 = new Boolean(0);var test3 = new Boolean(true);var test4 = new ...

  9. Video如何不自动全屏播放?

    知乎:微信内置浏览器 如何小窗不全屏播放视频? 目前在微信中只能全屏播放,只有加入腾讯白名单的视频才能小屏播放. 知乎上讨论的解决方案尚未测试,太麻烦了.

  10. SqlServer复杂存储过程

    SqlServer复杂存储过程 CREATE PROCEDURE FETCH_GOOUT_INFO AS BEGIN WITH l as(SELECT A.ZJHM, O.KSQR, O.JSRQ, ...