繼續上一篇的話題,既然已經搭建了 GitLab 的代碼倉庫,那麼如今就能夠開始進行下一步持續集成環境的搭建了。公司準備利用 Jenkins CI 進行持續集成,本文記錄了 Jenkins 的安裝、基礎配置、界面美化、經常使用插件及常見錯誤處理。html
1. 安裝 Jenkins
準備工做java
安裝 JDK,並配置環境變量git
安裝 mavenshell
配置阿里雲的 maven 鏡像源地址,
vim /usr/share/maven/conf/settings.xml
將👇內容添加進mirrors
節點vim1
2
3
4
5
6
7<mirror>
<!--This sends everything else to /public -->
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>安裝 git安全
配置鏡像源地址服務器
1 |
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo |
修改訪問 IP 和 端口號jvm
vim /etc/sysconfig/jenkins
JENKINS_PORT="10080"
配置 JDK 路徑到 Jenkins 中maven
vim /etc/init.d/jenkins
工具將本身的 java 目錄加入到
candidates
裏1
2
3
4
5
6
7
8
9candidates="
/etc/alternatives/java
/usr/lib/jvm/java-1.8.0/bin/java
/usr/lib/jvm/jre-1.8.0/bin/java
/usr/lib/jvm/java-1.7.0/bin/java
/usr/lib/jvm/jre-1.7.0/bin/java
/usr/bin/java
/opt/jdk1.8.0_144/bin/java
"
安裝完畢後啓動
1 |
sudo service jenkins start # 啓動jenkins服務 |
2. 配置 Jenkins
初始化密碼
cat /var/lib/jenkins/secrets/initialAdminPassword
安裝插件
選擇左側推薦的插件安裝便可
配置管理員帳號密碼
配置 JDK、Maven、Git、Docker
系統管理 → 全局工具配置(儘可能在服務器本地安裝,而後輸入安裝路徑,不推薦使用在線安裝,由於在線安裝有些資源都在國外,下載速度極慢)
配置郵件服務器信息
系統管理 → 系統設置,①Jenkins Location→系統管理員郵件地址②Extended E-mail Notification③郵件通知。
其中 Extended E-mail Notification 的兩個地方能夠作個性化配置:
Default Content Type 郵件的內容類型,改成
HTML(text/html)
。Default Subject 郵件的標題,改成
構建通知:$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!
。Default Content 郵件的內容,改成👇內容。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<html>
<head>
<meta charset="UTF-8">
<title>${PROJECT_NAME}-第${BUILD_NUMBER}次構建日誌</title>
</head>
<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0">
<table width="95%" cellpadding="0" cellspacing="0" style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
<tr>
<td>(本郵件是程序自動下發的,請勿回覆!)</td>
</tr>
<tr>
<td><h2>
<font color="#0000FF">構建結果 - ${BUILD_STATUS}</font>
</h2></td>
</tr>
<tr>
<td><br />
<b><font color="#0B610B">構建信息</font></b>
<hr size="2" width="100%" align="center" /></td>
</tr>
<tr>
<td>
<ul>
<li>項目名稱: ${PROJECT_NAME}</li>
<li>構建編號: 第${BUILD_NUMBER}次構建</li>
<li>觸發緣由: ${CAUSE}</li>
<li>構建日誌: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
<li>構建Url: <a href="${BUILD_URL}">${BUILD_URL}</a></li>
<li>工做目錄: <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
<li>項目Url: <a href="${PROJECT_URL}">${PROJECT_URL}</a></li>
</ul>
</td>
</tr>
<tr>
<td><b><font color="#0B610B">Changes Since Last Successful Build:</font></b>
<hr size="2" width="100%" align="center" /></td>
</tr>
<tr>
<td>
<ul>
<li>歷史變動記錄 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li>
</ul> ${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br />%c<br />",showPaths=true,changesFormat="<pre>[%a]<br />%m</pre>",pathFormat=" %p"}
</td>
</tr>
<tr>
<td><b>Test Informations</b>
<hr size="2" width="100%" align="center" /></td>
</tr>
<tr>
<td><pre style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">Total:${TEST_COUNTS,var="total"},Pass:${TEST_COUNTS,var="pass"},Failed:${TEST_COUNTS,var="fail"},Skiped:${TEST_COUNTS,var="skip"}</pre>
<br /></td>
</tr>
<tr>
<td><b><font color="#0B610B">構建日誌 (最後 100行):</font></b>
<hr size="2" width="100%" align="center" /></td>
</tr>
<tr>
<td><textarea cols="80" rows="30" readonly="readonly" style="font-family: Courier New">${BUILD_LOG, maxLines=100}</textarea>
</td>
</tr>
</table>
</body>
</html>勾選上 Enable Debug Mode、Require Administrator for Template Testing、Enable watching for jobs、Allow sending to unregistered users
3. 美化 Jenkins
安利一款 material 風格的主題:http://afonsof.com/jenkins-material-theme/ ,支持使用 CDN,也支持自定義公司 logo 等等。
4. 經常使用插件
- Maven Integration plugin:用於構建 Maven 項目
- Gitlab Hook Plugin:用於觸發 GitLab 的一些 WebHooks 來構建項目
- Simple Theme Plugin:配合上面的美化 Jenkins 使用
- FireLine Plugin:代碼規範檢查,已經集成了阿里巴巴的代碼規約(P3C)檢查
- HTML Publisher plugin:將一些測試結果變成 HTML 文檔
- JUnit Plugin:JUnit 測試
- Checkstyle Plug-in:檢測代碼風格
- FindBugs Plug-in:檢測構建出來的 class 文件是否安全
- Static Analysis Collector Plug-in:對 七、8 兩個插件檢測出來的結果進行彙總
- Extended E-mail Notification:個性化郵件模板
- Dingding[釘釘] Plugin:釘釘通知插件
5. 常見錯誤解決
添加鏡像源的時候出現以下錯誤:
1 |
Resolving pkg.jenkins-ci.org (pkg.jenkins-ci.org)... failed: Temporary failure in name resolution. |
解決方法:
vim /etc/resolv.conf
添加一行 nameserver 8.8.8.8
HTML Publisher Plugin 插件在新的 Jenkins 版本中,打開生成的網頁中沒法加載 CSS、沒法點擊按鈕等狀況:
因爲 CSP(Content Security Policy)所致,可在 系統管理→腳本命令行 中執行:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")