環境
CentOS Linux release 7.6.1810
jdk1.8.0_65
apache-tomcat-8.5.45
Jenkins 2.235.5
apache-maven-3.6.3
git-2.9.5
gradle-6.6.1
在"系統管理" -> "全局工具配置" 中,設置你要使用到的構建工具、版本控制工具、JDK 版本、Jenkins工作目錄、郵件通知服務等。全局工具配置下面默認只有Maven 配置、JDK、Maven安裝,其他的工具配置需要先安裝插件再來這里配置。
1、JDK
(1)Linux安裝jdk
搭建Linux-java web運行環境之一:安裝jdk+tomcat
(2)配置jenkins JDK環境變量
2、構建工具的配置
常見的構建工具有make、ant、maven、gradle,這里只演示maven、gradle,另外的配置也是類似操作。
(一)maven
(1)安裝
安裝很簡單,請自行百度,我這里安裝3.6.3版本
[root@node106 apache-maven-3.6.3]# mvn -v Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f) Maven home: /usr/local/apache-maven-3.6.3 Java version: 1.8.0_65, vendor: Oracle Corporation, runtime: /usr/local/jdk1.8.0_65/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"
(2)配置
(二)gradle
(1)Linux安裝gradle
第一步:下載 [root@node106 ~]# wget https://services.gradle.org/distributions/gradle-6.6.1-all.zip 第二步:解壓 [root@node106 ~]# unzip gradle-6.6.1-all.zip 第三步:配置環境變量 [root@node106 ~]# vim /etc/profile [root@node106 ~]# source /etc/profile 第四步:檢驗是否成功 [root@node106 ~]# gradle -version Welcome to Gradle 6.6.1! Here are the highlights of this release: - Experimental build configuration caching - Built-in conventions for handling credentials - Java compilation supports --release flag For more details see https://docs.gradle.org/6.6.1/release-notes.html ------------------------------------------------------------ Gradle 6.6.1 ------------------------------------------------------------ Build time: 2020-08-25 16:29:12 UTC Revision: f2d1fb54a951d8b11d25748e4711bec8d128d7e3 Kotlin: 1.3.72 Groovy: 2.5.12 Ant: Apache Ant(TM) version 1.10.8 compiled on May 10 2020 JVM: 1.8.0_65 (Oracle Corporation 25.65-b01) OS: Linux 3.10.0-957.el7.x86_64 amd64
(2)配置
(2.1)jenkins先安裝gradle插件
(2.2)jenkins配置gradle
3、版本控制工具-svn和git
(一)git
(1)安裝git
#安裝依賴 [root@node106 local]# yum -y install gcc-c++ zlib-devel openssl-devel cpio expat-devel gettext-devel curl-devel perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker #下載tar包 [root@node106 local]# cd /usr/local/src && wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz #編譯構建 [root@node106 local]# mv /usr/local/src/git-2.9.5 /usr/local && cd git-2.9.5 [root@node106 git-2.9.5]# make prefix=/usr/local all [root@node106 git-2.9.5]# make prefix=/usr/local install #驗證 [root@node106 git-2.9.5]# git --version git version 2.9.5
(2)配置git
(2.1)下載git插件
(2.2)配置git
注意:要配置到git命令 而不是安裝目錄
(二)svn
(1)安裝svn
參考:DevOps之二:搭建SVN服務器(subversion)
(2)配置
(2.1)安裝svn插件
(2.2)配置
在新建的構建項目里配置
4、更改Jenkins的工作目錄
Jenkins默認的主目錄是root/.jenkins,一般生產主機這個目錄空間不大,但在以后需要安裝很多插件,以及構建很多任務,每次都要備份應用程序包,慢慢就占滿了磁盤,導致需要將Jenkins默認的主目錄修改到其它目錄。
4.1在Jenkins運行時是不能更改的. 請先將Jenkins停止運行,否則會使服務掛掉,所有配置均重新配置
4.2要先將原目錄內容全部遷移到新目錄下面,比如新目錄是/data/.jenkins:
[root@node106 data]# mv /root/.jenkins /data
4.3修改
有三種方式修改:
(1)使用你Web容器的管理工具設置JENKINS_HOME環境參數.
打開tomcat的bin目錄,編輯catalina.sh文件。
在# OS specific support. $var _must_ be set to either true or false.上面添加:
export JENKINS_HOME="/data/.jenkins"
在引號中填入你的路徑。
(2)在啟動Web容器之前設置全局環境變量JENKINS_HOME.
用root用戶登錄
編輯profile文件:vi /etc/profile
在最后加入:export JENKINS_HOME=/data/.jenkins
保存,退出后執行:source /etc/profile 讓配置生效
(3)(不推薦)更改Jenkins.war(或者在展開的Web容器)內的web.xml配置文件)
<!-- if specified, this value is used as the Hudson home directory --> <env-entry> <env-entry-name>HUDSON_HOME</env-entry-name> <env-entry-type>java.lang.String</env-entry-type> <env-entry-value>/data/jenkins</env-entry-value> </env-entry> <!-- 在<env-entry-value>節點中填入路徑,windows系統建議使用/分隔路徑 -->
5、郵件通知
Jenkins是一個很受歡迎的CI持續集成工具,能夠實現項目的自動構建、打包、測試、發布等。還可以在構建失敗、構建不穩定等狀態后發送郵件通知。
現介紹一下如何在Jenkins中配置實現郵件通知。在Jenkins中配置實現郵件通知,Jenkins提供了兩種方式的配置:
一種是Jenkins內置默認的郵件通知,但是它本身有很多局限性,比如它的郵件通知無法提供詳細的郵件內容、無法定義發送郵件的格式、無法定義靈活的郵件接收配置等等;另外一種是通過安裝Email Extension Plugin插件,使用該插件來發送郵件通知。
不管哪種郵件通知都有全局配置和項目配置。其中全局配置是在Jenkins中系統管理的系統設置里面設置,項目配置在具體的項目中的配置中設置。
5.1Jenkins內置默認的郵件通知配置
(一)全局配置
(1)系統管理--》系統配置--》Jenkins Locaction填入系統管理員郵件地址
系統管理員郵件地址一定要配置,否則發不了郵件通知,因為郵件通知都是由系統管理員的郵箱發出來的。
(2)找到郵件通知項,填入SMTP服務器信息及用戶名、密碼等認證信息。
配好以后勾選“通過發送測試郵件測試配置”
(二)項目配置
郵件通知的全局設置配好以后就可以在具體的項目中應用發送郵件通知了。
在項目的設置中找到“增加構建后的操作步驟”,選擇“E-mail Notifacation”通過E-mail通知。
在Recipients中填入郵件通知接收者中,如果有多個接收者用空格分隔,可以發送郵件通知給多個相關的接收人。
5.2 Email Extension Plugin插件配置郵件通知
(一)全局配置
安裝插件
(2)系統管理-->系統設置”,找到Extend E-mail Notification進行全局配置
(二)項目配置
郵件全局屬性和變量清單:

郵件通知配置相關的全局屬性詳解 1. Override Global Settings:如果不選,該插件將使用默認的E-mail Notification通知選項。反之,您可以通過指定不同於( 默認選項)的設置來進行覆蓋。 2. Default Content Type:指定構建后發送郵件內容的類型,有Text和HTML兩種. 3. Use List-ID Email Header:為所有的郵件設置一個List-ID的郵件信頭 4. Add 'Precedence: bulk' Email Header:設置優先級 5. Default Recipients:自定義默認電子郵件收件人列表。如果沒有被項目配置覆蓋,該插件會使用這個列表。您可以在項目配置使用$ DEFAULT_RECIPIENTS參數包括此默認列表,以及添加新的地址在項目級別。添加抄送:cc:電子郵件地址例如,CC:someone@somewhere.com 6. Reply To List:回復列表, A comma separated list of e-mail addresses to use in the Reply-To header of the email. This value will be available as $DEFAULT_REPLYTO in the project configuration. 7. Emergency reroute:如果這個字段不為空,所有的電子郵件將被單獨發送到該地址(或地址列表)。 8. Excluded Committers:防止郵件被郵件系統認為是垃圾郵件,郵件列表應該沒有擴展的賬戶名(如:@domain.com),並且使用逗號分隔 9. Default Subject:自定義郵件通知的默認主題名稱。該選項能在郵件的主題字段中替換一些參數,這樣你就可以在構建中包含指定的輸出信息。 10. Maximum Attachment Size:郵件最大附件大小。 11. Default Content:自定義郵件通知的默認內容主體。該選項能在郵件的內容中替換一些參數,這樣你就可以在構建中包含指定的輸出信息。 12. Default Pre-send Script:默認發送前執行的腳本(注:grooy腳本,這是我在某篇文章上看到的,不一定准確)。 13. Enable Debug Mode:啟用插件的調試模式。這將增加額外的日志輸出,構建日志以及Jenkins的日志。在調試時是有用的,但不能用於生產。 14. Enable Security:啟用時,會禁用發送腳本的能力,直接進入Jenkins實例。如果用戶試圖訪問Jenkins管理對象實例,將拋出一個安全異常。 15. Content Token Reference:郵件中可以使用的變量,所有的變量都是可選的。 全局郵件變量 email-ext插件允許使用變量來動態插入數據到郵件的主題和內容主體中。變量是一個以$(美元符號)開始,並以空格結束的字符串。當一個郵件觸發時,主題和內容主體字段的所有變量都會通過真實的值動態地替換。同樣,變量中的“值”能包含其它的變量,都將被替換成真實的內容。 比如,項目配置頁的默認主題和內容分別對應的是全局配置頁面的DEFAULT_SUBJECT和DEFAULT_CONTENT,因此它會自動地使用全局的配置。同理,觸發器中的Subject和Content分別對應的是項目配置頁面的DEFAULT_SUBJECT和DEFAULT_CONTENT,所以它也會自動地使用項目的配置。由於變量中的“值”能包含其它的變量,所以就能為變量快速地創建不同的切入點:全局級別(所有項目),專屬級別(單一項目),觸發器級別(構建結果)。 如果你要查看所有可用的變量,你可以點擊配置頁的Content Token Reference的問號獲取詳細的信息。 所有的變量都是可選的,每個變量可以如下表示,字符串類型使用name=“value”,而布爾型和數字型使用name=value。如果{和}標記里面沒有變量,則不會被解析。示例:$TOKEN,${TOKEN},${TOKEN,count=100},${ENV,var=”PATH”} 提示:用英文逗號分隔變量的參數。 常用的屬性如下: ${FILE,path="PATH"} 包括指定文件(路徑)的含量相對於工作空間根目錄。 path文件路徑,注意:是工作區目錄的相對路徑。 ${BUILD_NUMBER} 顯示當前構建的編號。 ${JOB_DESCRIPTION} 顯示項目描述。 ${SVN_REVISION} 顯示svn版本號。還支持Subversion插件出口的SVN_REVISION_n版本。 ${CAUSE} 顯示誰、通過什么渠道觸發這次構建。 ${CHANGES } -顯示上一次構建之后的變化。 showPaths 如果為 true,顯示提交修改后的地址。默認false。 showDependencies 如果為true,顯示項目構建依賴。默認為false format 遍歷提交信息,一個包含%X的字符串,其中%a表示作者,%d表示日期,%m表示消息,%p表示路徑,%r表示版本。注意,並不是所有的版本系統都支持%d和%r。如果指定showPaths將被忽略。默認“[%a] %m\\n”。 pathFormat 一個包含“%p”的字符串,用來標示怎么打印路徑。 ${BUILD_ID}顯示當前構建生成的ID。 ${PROJECT_NAME} 顯示項目的全名。 ${PROJECT_DISPLAY_NAME} 顯示項目的顯示名稱。 ${SCRIPT} 從一個腳本生成自定義消息內容。自定義腳本應該放在"$JENKINS_HOME/email-templates"。當使用自定義腳本時會默認搜索$JENKINS_HOME/email-templatesdirectory目錄。其他的目錄將不會被搜索。 script 當其使用的時候,僅僅只有最后一個值會被腳本使用(不能同時使用script和template)。 template常規的simpletemplateengine格式模板。 ${JENKINS_URL} 顯示Jenkins服務器的url地址(你可以再系統配置頁更改)。 ${BUILD_LOG_MULTILINE_REGEX}按正則表達式匹配並顯示構建日志。 regex java.util.regex.Pattern 生成正則表達式匹配的構建日志。無默認值,可為空。 maxMatches 匹配的最大數量。如果為0,將匹配所有。默認為0。 showTruncatedLines 如果為true,包含[...truncated ### lines...]行。默認為true。 substText 如果非空,就把這部分文字(而不是整行)插入該郵件。默認為空。 escapeHtml 如果為true,格式化HTML。默認為false。 matchedSegmentHtmlStyle 如果非空,輸出HTML。匹配的行數將變為<b style=”your-style-value”> html escaped matched line </b>格式。默認為空。 ${BUILD_LOG} 顯示最終構建日志。 maxLines 日志最多顯示的行數,默認250行。 escapeHtml 如果為true,格式化HTML。默認false。 ${PROJECT_URL} 顯示項目的URL地址。 ${BUILD_STATUS} -顯示當前構建的狀態(失敗、成功等等) ${BUILD_URL} -顯示當前構建的URL地址。 ${CHANGES_SINCE_LAST_SUCCESS} -顯示上一次成功構建之后的變化。 reverse在頂部標示新近的構建。默認false。 format遍歷構建信息,一個包含%X的字符串,其中%c為所有的改變,%n為構建編號。默認”Changes for Build #%n\n%c\n”。 showPaths,changesFormat,pathFormat分別定義如${CHANGES}的showPaths、format和pathFormat參數。 ${CHANGES_SINCE_LAST_UNSTABLE} -顯示顯示上一次不穩固或者成功的構建之后的變化。 reverse在頂部標示新近的構建。默認false format遍歷構建信息,一個包含%X的字符串,其中%c為所有的改變,%n為構建編號。默認”Changes for Build #%n\n%c\n”。 showPaths,changesFormat,pathFormat分別定義如${CHANGES}的showPaths、format和pathFormat參數。 ${ENV} –顯示一個環境變量。 var– 顯示該環境變量的名稱。如果為空,顯示所有,默認為空。 ${FAILED_TESTS} -如果有失敗的測試,顯示這些失敗的單元測試信息。 ${JENKINS_URL} -顯示Jenkins服務器的地址。(你能在“系統配置”頁改變它)。 ${HUDSON_URL} -不推薦,請使用$JENKINS_URL ${PROJECT_URL} -顯示項目的URL。 ${SVN_REVISION} -顯示SVN的版本號。 ${JELLY_SCRIPT} -從一個Jelly腳本模板中自定義消息內容。有兩種模板可供配置:HTML和TEXT。你可以在$JENKINS_HOME/email-templates下自定義替換它。當使用自動義模板時,”template”參數的名稱不包含“.jelly”。 template模板名稱,默認”html”。 ${TEST_COUNTS} -顯示測試的數量。 var– 默認“total”。 total -所有測試的數量。 fail -失敗測試的數量。 skip -跳過測試的數量。