持续集成之路 —— Stockeye CalendarStock 库开发实录

关键字 :Jenkins、Gradle、JUnit、Jacoco、jar 包和库、TDD

库项目结构

1
2
3
4
5
6
| build.gradle
| src
| |- main
| |- java/com/msolo/stockeye/calendarstock/UtilCalTime.java
| |- test
| |- java/com/msolo/stockeye/calendarstock/UtilCalTimeTest.java

构建脚本(无 Jacoco)

1
2
3
4
5
6
7
8
9
10
11
apply plugin: 'java'
version = 0.1
repositories {
mavenCentral()
}
dependencies {
testCompile 'junit:junit:4.11'
}
task libJavadocs(type: Javadoc) {
source = sourceSets.main.allJava
}

Jenkins 项目配置(无 JaCoCo)

  • 项目名称:android_stockeye_cal_lib
  • 源码管理:https://github.com/mSoloMoon/android_stockeye_calendar_lib.git
  • 构建触发器:Poll SCM -> *
  • 构建步骤1:Invoke Gradle script -> Switch -> clean build javadoc
  • 构建后操作1:Publish JUnit test result report -> XML -> */build/test-results/.xml
  • 构建后操作2:Publish Javadoc -> build/docs/javadoc/

持续集成(无 JaCoCo)

项目首页
测试结果总结

控制台输出
Javadoc
工作空间
JUnit报告1
JUnit报告2
生成的Jar包

构建脚本(增加 JaCoCo)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 增加的部分
apply plugin: "jacoco"
jacocoTestReport {
group = "reporting"
description = "Generate Jacoco coverage reports after running tests."
reports {
xml.enabled true
html.enabled true
csv.enabled false
}
//classDirectories = fileTree(dir: 'build/classes/main', include: 'com/thc/**')
//sourceDirectories = fileTree(dir: 'scr/java', include: 'com/thc/**')
additionalSourceDirs = files(sourceSets.main.allJava.srcDirs)
}

Jenkins 项目配置(增加 Jacoco)

  • 构建后操作3:Record JaCoCo coverage report
  • 构建后操作4:E-mail Notification

持续集成(增加 JaCoCo)

项目首页
Code Coverage report
控制台输出