1. 程式人生 > >Gradle進階:5:結合Jenkins進行持續整合

Gradle進階:5:結合Jenkins進行持續整合

在這裡插入圖片描述
結合Jenkins進行gradle的持續構建有多種方式,可以在Jenkins的容器種直接安裝gradle並直接使用,也可以通過jenkins的gradle外掛進行使用,也可以通過呼叫gradle的映象來進行使用。這篇文章以jenkins的gradle外掛使用方式為例,介紹如何在jenkins中使用gradle。

Jenkins的gradle外掛

在這裡插入圖片描述

外掛安裝方式

可以通過命令列install-plugins.sh gradle方式進行外掛安裝,也可以通過Jenkins的介面直接安裝gradle
在這裡插入圖片描述

安裝gradle

gradle外掛只是負責呼叫gradle,當然也可以通過gradle外掛安裝,無論哪種方式,在jenkins中能夠呼叫到gradle這件事情是整個整合的前提和條件。因為這裡示例的jenkins是執行在容器中的,所以在jenkins的映象中需要確保能夠執行gradle的命令(如果不是映象方式,只需要保證安裝在同一臺機器上,並且具有許可權即可)

~ # /usr/local/share/gradle/bin/gradle --version

------------------------------------------------------------
Gradle 5.0
------------------------------------------------------------

Build time:   2018-11-26 11:48:43 UTC
Revision:     7fc6e5abf2fc5fe0824aec8a0f5462664dbcd987

Kotlin DSL:   1.0.4
Kotlin:       1.3.10
Groovy:       2.5.4
Ant:          Apache Ant(TM) version 1.9.13 compiled on July 10 2018
JVM:          1.8.0_121 (Oracle Corporation 25.121-b13)
OS:           Linux 3.10.0-693.el7.x86_64 amd64

~ #

設定gradle

在Jenkins的Global Tool Configuration中設定如下Gradle的資訊
在這裡插入圖片描述

使用jenkins執行構建

gradle的spring boot的demo應用

將gradle的demo應用上傳到自行搭建的gitlab,包括gitlab和svn相關的版本管理等請參看:https://blog.csdn.net/liumiaocn/article/details/82286778

在這裡插入圖片描述

建立一個free style的jenkins的job

建立一個free style的jenkins的job,注意如下兩項設定:

  • 設定gitlab的程式碼倉庫資訊
    在這裡插入圖片描述

  • 設定gradle資訊
    注意此處選定上文中已經設定的名為gradle的工具資訊,而此gradle的HOME目錄則位於jenkins的/usr/local/share/gradle/下。
    在這裡插入圖片描述

執行構建

這樣即可執行構建,執行構建的日誌資訊如下所示:

Started by user root
Building in workspace /data/jenkins/workspace/gradle-demo-freestyle
 > git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url http://192.168.163.118:32001/root/gradle-demo # timeout=10
Fetching upstream changes from http://192.168.163.118:32001/root/gradle-demo
 > git --version # timeout=10
using GIT_ASKPASS to set credentials 
 > git fetch --tags --progress http://192.168.163.118:32001/root/gradle-demo +refs/heads/*:refs/remotes/origin/*
 > git rev-parse refs/remotes/origin/master^{commit} # timeout=10
 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
Checking out Revision f01485b7b76e88ddb1ab17c0afffa6c358f822c8 (refs/remotes/origin/master)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f f01485b7b76e88ddb1ab17c0afffa6c358f822c8
Commit message: "init"
 > git rev-list f01485b7b76e88ddb1ab17c0afffa6c358f822c8 # timeout=10
[Gradle] - Launching build.
[gradle-demo-freestyle] $ /usr/local/share/gradle/bin/gradle build
Starting a Gradle Daemon (subsequent builds will be faster)
> Task :compileJava
> Task :processResources
> Task :classes
> Task :bootJar
> Task :jar SKIPPED
> Task :assemble
> Task :compileTestJava
> Task :processTestResources NO-SOURCE
> Task :testClasses

> Task :test
2018-12-26 5:41:47.383  INFO 1170 --- [       Thread-6] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'

> Task :jacocoTestReport
> Task :check
> Task :build

BUILD SUCCESSFUL in 3m 54s
6 actionable tasks: 6 executed
Build step 'Invoke Gradle script' changed build result to SUCCESS
Finished: SUCCESS
  • 確認結果
    進到jenkins的構建目錄中可以確認,build相關的目錄下的內容均已完成,包括spring boot的jar檔案以及jacoco的單體測試覆蓋率報告的資訊等。
/data/jenkins/workspace/gradle-demo-freestyle # ls
build            build.gradle     settings.gradle  src
/data/jenkins/workspace/gradle-demo-freestyle # find build -type d
build
build/classes
build/classes/java
build/classes/java/main
build/classes/java/main/com
build/classes/java/main/com/liumiaocn
build/classes/java/main/com/liumiaocn/springbootdemo
build/classes/java/test
build/classes/java/test/com
build/classes/java/test/com/liumiaocn
build/classes/java/test/com/liumiaocn/springbootdemo
build/tmp
build/tmp/compileJava
build/tmp/bootJar
build/tmp/compileTestJava
build/tmp/expandedArchives
build/tmp/expandedArchives/org.jacoco.agent-0.8.2.jar_2aca8b620b19ecd063f63feff8caaa38
build/tmp/expandedArchives/org.jacoco.agent-0.8.2.jar_2aca8b620b19ecd063f63feff8caaa38/META-INF
build/tmp/expandedArchives/org.jacoco.agent-0.8.2.jar_2aca8b620b19ecd063f63feff8caaa38/META-INF/maven
build/tmp/expandedArchives/org.jacoco.agent-0.8.2.jar_2aca8b620b19ecd063f63feff8caaa38/META-INF/maven/org.jacoco
build/tmp/expandedArchives/org.jacoco.agent-0.8.2.jar_2aca8b620b19ecd063f63feff8caaa38/META-INF/maven/org.jacoco/org.jacoco.agent
build/tmp/expandedArchives/org.jacoco.agent-0.8.2.jar_2aca8b620b19ecd063f63feff8caaa38/org
build/tmp/expandedArchives/org.jacoco.agent-0.8.2.jar_2aca8b620b19ecd063f63feff8caaa38/org/jacoco
build/tmp/expandedArchives/org.jacoco.agent-0.8.2.jar_2aca8b620b19ecd063f63feff8caaa38/org/jacoco/agent
build/resources
build/resources/main
build/libs
build/test-results
build/test-results/test
build/test-results/test/binary
build/jacoco
build/reports
build/reports/tests
build/reports/tests/test
build/reports/tests/test/classes
build/reports/tests/test/packages
build/reports/tests/test/css
build/reports/tests/test/js
build/reports/jacoco
build/reports/jacoco/test
build/reports/jacoco/test/html
build/reports/jacoco/test/html/jacoco-resources
build/reports/jacoco/test/html/com.liumiaocn.springbootdemo
/data/jenkins/workspace/gradle-demo-freestyle #