1. 程式人生 > >Maven+TravisCI持續整合和Coveralls測試覆蓋率檢測

Maven+TravisCI持續整合和Coveralls測試覆蓋率檢測

之前挖了不少開源專案的坑 ,準備慢慢填起來 .第一步當然從專案管理開始 ,把之前的maven專案弄得更加規整.

Maven

還是延續之前的parent-pom/child-jar的結構
* parent中只留配置 : dependencies/plugins 都替換成 management節點
* 補充scm/issue等節點資訊 ,供其他工具整合
* 增加source/javadoc等plugin ,方便第三方使用者使用.
* 增加程式碼掃描工具(最好是通過IDEA的編寫時工具檢測更好)

<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>site.koalazoo.cutekoala</groupId> <artifactId>
cute-koala</artifactId> <version>0.1.0</version> <packaging>pom</packaging> <name>Cute Koala</name> <url>https://github.com/Anddd7/cute-koala</url> <description>Manage your Java Application easiler.</description> <licenses> <license
>
<name>Apache License, Version 2.0</name> <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> <distribution>repo</distribution> </license> </licenses> <issueManagement> <system>GitHub Issues</system> <url>https://github.com/Anddd7/cute-koala/issues</url> </issueManagement> <inceptionYear>2017</inceptionYear> <scm> <connection>scm:git:https://github.com/Anddd7/cute-koala.git</connection> <developerConnection>scm:git:[email protected]:Anddd7/cute-koala.git</developerConnection> <url>https://github.com/Anddd7/cute-koala</url> </scm> <developers> <developer> <id>and777</id> <name>Eddy Liao</name> <email>[email protected]</email> <roles> <role>owner</role> <role>developer</role> </roles> <timezone>+8</timezone> </developer> </developers> <modules> <module>koala-core</module> <module>koala-test</module> </modules> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.jdk.v>1.8</project.build.jdk.v> <junit.v>4.12</junit.v> <slf4j-log4j12.v>1.7.5</slf4j-log4j12.v> <lombok.v>1.16.18</lombok.v> <fastjson.v>1.2.33</fastjson.v> <mysql-jdbc.v>6.0.6</mysql-jdbc.v> <guava.v>22.0</guava.v> <beetl.v>2.7.16</beetl.v> <snakeyaml.v>1.18</snakeyaml.v> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j-log4j12.v}</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.v}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.v}</version> <scope>provided</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.6.1</version> <configuration> <source>${project.build.jdk.v}</source> <target>${project.build.jdk.v}</target> </configuration> </plugin> </plugins> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.1.2</version> <executions> <execution> <id>attach-sources</id> <goals> <goal>jar-no-fork</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>2.10.4</version> <configuration> <quiet>true</quiet> <notimestamp>true</notimestamp> <additionalparam>-Xdoclint:-html</additionalparam> <encoding>${project.build.sourceEncoding}</encoding> <docencoding>${project.build.sourceEncoding}</docencoding> <charset>${project.build.sourceEncoding}</charset> <additionalparam>-XDignore.symbol.file</additionalparam> <additionalparam>-Xdoclint:-html</additionalparam> <linksource>true</linksource> </configuration> <executions> <execution> <id>attach-javadocs</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.projectlombok</groupId> <artifactId>lombok-maven-plugin</artifactId> <version>1.16.18.1</version> <executions> <execution> <phase>generate-sources</phase> <goals> <goal>delombok</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.7.6.201602180812</version> <executions> <execution> <id>prepare-agent</id> <goals> <goal>prepare-agent</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.eluder.coveralls</groupId> <artifactId>coveralls-maven-plugin</artifactId> <version>4.3.0</version> </plugin> </plugins> </pluginManagement> </build> </project>

持續整合

之前嘗試在阿里雲上搭Jenkins ,因為記憶體爆炸(免費機) ,以失敗告終.在新增SCM節點時 ,搜尋了一下整合的工具 ,發現了 Travis.Travis是一個持續整合的平臺 ,自帶與GitHub的整合 ,能夠檢測程式碼提交併觸發繼承指令碼.

  • 進入官網使用GitHub登入 ,然後選擇想要繼承的repo
  • 在repo下新建.travis.yml檔案 ,寫入自動整合觸發的指令碼
  • push程式碼到github ,然後就可以到travis首頁檢視編譯情況

coveralls是一個測試報告展示平臺 ,能夠整合多種測試報告 .也是在使用travis的時候檢索到的 ,通過travis持續整合並生成測試報告 ,然後上傳到coveralls .


  • 使用GitHub賬號登入 ,選擇repo
  • 複製repoToken

repoToken是你訪問測試報告的憑證 ,因此不能明文上傳到github上 ,但是我們又需要在CI中使用這個repoToken.

  • 加密Token
    • 使用travis的對稱加密工具(需要ruby gem工具):travis encrypt COVERALLS_TOKEN=xxxxxx
    • 複製加密後的token到.travis.yml檔案中
    • 使用變數名訪問
  • 在travis指令碼中使用token和測試報告生成工具
  • 生成並上傳測試報告
  • Java專案官方推薦了一個plugin使用 ,token不能使用明文 ,所以不能直接把token配置在pom中.而是在travis整合時 ,把解密後的token拿來使用.

    <build>
        <plugins>
        <!-- 直接引用parent中配置好的plugin -->
          <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
          </plugin>
          <plugin>
            <groupId>org.eluder.coveralls</groupId>
            <artifactId>coveralls-maven-plugin</artifactId>
          </plugin>
        </plugins>
      </build>
    language: java
    sudo: false
    script: mvn clean verify
    after_success:
      - mvn clean test
      ## 生成測試報告
      - mvn jacoco:report
      ## 獲取travis解密的token ,並呼叫coveralls-plugin上傳報告
      - mvn coveralls:report -DrepoToken="${COVERALLS_TOKEN}"
    
    ## 加密後的token字串
    env:
      global:
        - secure: "..............................."

    最後

    就可以在主頁上看到持續整合和測試報告的結果 ,還可以匯入非常有逼格的budge

    這裡寫圖片描述

    這裡寫圖片描述

    相關推薦

    Maven+TravisCI持續整合Coveralls測試覆蓋率檢測

    之前挖了不少開源專案的坑 ,準備慢慢填起來 .第一步當然從專案管理開始 ,把之前的maven專案弄得更加規整. Maven 還是延續之前的parent-pom/child-jar的結構 * parent中只留配置 : dependencies/plug

    Laravel專案中運用Travis持續整合自動化測試

    背景 在很多Github開源專案頁面的readme中,經常看到類似的圖示 這個 bulid passing,其實是 Travis 的構建狀態圖示。Travis 是一個結合 Github 使用的持續整合(CI:continuous integration)

    Jenkins學習總結(3)——Jenkins+Maven+Git搭建持續整合自動化部署的

    前言     持續整合這個概念已經成為軟體開發的主流,可以更頻繁的進行測試,儘早發現問題並提示。自動化部署就更不用說了,可以加快部署速度,並可以有效減少人為操作的失誤。之前一直沒有把這個做起來,最近的新專案正好有機會,費了一番功夫總算搞好了,特此記錄。 1. 開發環

    Jenkins Pipeline+Maven+Gitlab持續整合構建

      1.以下全是個人理解,此文全是在實際工作環境中實現,如果您是想看著這篇部落格去練習,可能有些環境您沒法搭建(maven庫,編譯順序),得問問一個搞開發的朋友,開發得提供些東西,或者,您可以通過此文件,學習到pipeline指令碼的知識,您可以去除掉用mvn  build這一項,其他的

    jenkins+maven+git持續整合部署問題總結

    1、這個問題出現在單獨構建一個專案的子模組時,很奇怪,構建父專案沒有問題。 Executing Maven: -N -B -f /root/.jenkins/workspace/newMer/pom.xml clean install -Dmaven.tes

    Jenkins+Sonar搭建持續整合程式碼質量檢查環境

    Jenkins+Sonar搭建 一、相關環境及下載地址 二、軟體安裝 Jenkins安裝 命令:dpkg –i jenkins_2.121.3_all.deb 若有報錯,執行# apt-get update 和# apt-get –f install, # ln -s /opt/jdk1.8.0_131/b

    基於jenkins構建應用的docker映象做持續整合部署

    為了做持續的整合和部署,引入了jenkins,利用jenkins來構建應用的docker映象並push到私有倉庫,然後再基於應用的docker映象來發布專案,這樣減少了很多的手動操作,基本能實現持續整合

    Springboot Gitlab Jenkins Maven Docker 持續整合/持續交付

    Gilab安裝教程 http://blog.csdn.net/chenhaifeng2016/article/details/78603216 http://blog.csdn.net/chenhaifeng2016/article/details/78603932 Je

    資料庫的持續整合版本控制

    在提出版本化資料庫工作是一個必要規則這一觀點之後,Scott Allen又詳述了一個做好版本化資料庫的方法,他給出了一個易於理解、實踐性很強的方法,通過建立基線、使用變更指令碼的方法來管理資料庫的修訂、控制程式化資料庫物件(如檢視、儲存過程、函式和觸發器),並充分利用分支和合並。 Allen在釋出了關係型

    介面自動化測試持續整合--Soapui介面測試

    介面測試目前筆者掌握的工具有三種: 一、python+requests+jenkins,優點:程式碼實現介面測試,對測試程式碼書寫比較自由等;缺點:需要測試者需要有一定的程式碼基礎; 二、jmeter+ant+jenkins,優點:實現介面測試的操作步驟簡單;缺點:專案工程結構複雜,維護性較差; 三、s

    自動化測試持續整合方案--Jmeter 測試介面及效能

    轉載地址:https://testerhome.com/topics/2580 一、什麼是介面測試?   介面測試是測試系統元件間介面的一種測試。介面測試主要用於檢測外部系統與系統之間以及內部各個子系統之間的互動點。測試的重點是要檢查資料的交換,傳遞和控制管理過程,以及系

    CI / CD 持續整合部署 相關概念

    文章目錄 什麼是CI / CD?其意義何在? CI/CD持續整合/持續部署定義 持續整合 持續部署 補:持續交付 與DevOps的關係 與持續部署的關

    持續整合釋出工具(CI/CD)

    需要用到的工具:git & gitlab & jenkins gitlab的安裝和部署: 一、gitlab部署 1.gitlab安裝: 首先配置yum源: vim /etc/yum.repos.d/gitlab.repo [gitlab] na

    CI/CD 持續整合持續交付 (一)

    在網際網路時代,對於每一個企業,公司,產品快速迭代的重要性不言而喻,針對敏捷開發以使用CICD來完成。但是持續整合和持續交付(CI/CD)其實並沒有那麼容易實現,開發和運維總是忙裡忙外,最後還吃力不

    CI/CD 持續整合持續交付 (二)

    根據上次的文章介紹,制定了一套解決方案 此套方案 作為 PaaS 或者SaaS 都是棒棒的,結合著openstack 作為IaaS層 更適合, 整體的思路大概是這樣的,後續會詳細介紹。 客戶或產品有新的需求變更,或者測試人員提出bug時,會在redmine服務上建立提交事

    TeamCity持續整合持續交付Docker

    TeamCity伺服器 - 強大的持續整合和持續交付功能該映象適用於生產用途和評估目的。鏡像標籤docker映像中的所有預設標記都指向Linux映像。 Windows Docker映象有後綴-windowsservercore 和-nanoserverjetbrains/te

    TravisCI持續整合自動部署Hexo部落格的個人實踐

    優秀的程式設計師都是不用持續整合的 前幾天我面試了一個碼農,連續幾個專業問題他都沒答上來。 尷尬之餘,我問它:「你沒有什麼理想嗎?你現在最渴望的事情是什麼?」 碼農轉悠著大眼睛,不假思索道:「做一個持續整合的自動部署!」 真沒想到在面試中居然還有這種操作

    SpringBoot+Docker+Git+Jenkins實現簡易的持續整合持續部署

    努力了這麼久,但凡有點兒天賦,也該有些成功的跡象了。 前言 本篇文章引導你使用Jenkins部署SpringBoot專案,同時使用Docker和Git實現簡單的持續整合和持續部署。(專案地址:sso-merryyou) 流程圖如下:

    學習筆記——Maven實戰(四)基於Maven持續整合實踐

    Martin的《持續整合》 相信很多讀者和我一樣,最早接觸到持續整合的概念是來自Martin的著名文章《持續整合》,該文最早釋出於2000年9月,之後在2006年進行了一次修訂,它清晰地解釋了持續整合的概念,並總結了10條實踐,它們分別為: 只維護一個原始碼倉庫 自動化構建 讓構建自行測試 每人每天

    python+jenkins持續整合輸出html測試報告

    在jenkins上展示html的報告,需要新增一個HTML Publisher plugin外掛,把生成的html報告放到指定資料夾,這樣就能用jenkins去讀出指定資料夾的報告了。 一、構建後操作 1.前面執行完測試用例後,可以用“新增構建後操作步驟”,讀出