DevOps 之 Jenkins 安裝、配置、美化、插件及常見錯誤處理

繼續上一篇的話題,既然已經搭建了 GitLab 的代碼倉庫,那麼如今就能夠開始進行下一步持續集成環境的搭建了。公司準備利用 Jenkins CI 進行持續集成,本文記錄了 Jenkins 的安裝、基礎配置、界面美化、經常使用插件及常見錯誤處理。html

1. 安裝 Jenkins

準備工做java

  1. 安裝 JDK,並配置環境變量git

  2. 安裝 mavenshell

  3. 配置阿里雲的 maven 鏡像源地址,vim /usr/share/maven/conf/settings.xml 將👇內容添加進 mirrors 節點vim

    1
    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>
  4. 安裝 git安全

配置鏡像源地址服務器

1
2
3
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install jenkins

修改訪問 IP 和 端口號jvm

  1. vim /etc/sysconfig/jenkins
  2. JENKINS_PORT="10080"

配置 JDK 路徑到 Jenkins 中maven

  1. vim /etc/init.d/jenkins工具

  2. 將本身的 java 目錄加入到 candidates

    1
    2
    3
    4
    5
    6
    7
    8
    9
    candidates="
    /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

  1. 初始化密碼

    cat /var/lib/jenkins/secrets/initialAdminPassword

  2. 安裝插件

    選擇左側推薦的插件安裝便可

  3. 配置管理員帳號密碼

  4. 配置 JDK、Maven、Git、Docker

    系統管理 → 全局工具配置(儘可能在服務器本地安裝,而後輸入安裝路徑,不推薦使用在線安裝,由於在線安裝有些資源都在國外,下載速度極慢)

  5. 配置郵件服務器信息

    系統管理 → 系統設置,①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
      <!DOCTYPE html>
      <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. 經常使用插件

  1. Maven Integration plugin:用於構建 Maven 項目
  2. Gitlab Hook Plugin:用於觸發 GitLab 的一些 WebHooks 來構建項目
  3. Simple Theme Plugin:配合上面的美化 Jenkins 使用
  4. FireLine Plugin:代碼規範檢查,已經集成了阿里巴巴的代碼規約(P3C)檢查
  5. HTML Publisher plugin:將一些測試結果變成 HTML 文檔
  6. JUnit Plugin:JUnit 測試
  7. Checkstyle Plug-in:檢測代碼風格
  8. FindBugs Plug-in:檢測構建出來的 class 文件是否安全
  9. Static Analysis Collector Plug-in:對 七、8 兩個插件檢測出來的結果進行彙總
  10. Extended E-mail Notification:個性化郵件模板
  11. Dingding[釘釘] Plugin:釘釘通知插件

5. 常見錯誤解決

添加鏡像源的時候出現以下錯誤:

1
2
3
Resolving pkg.jenkins-ci.org (pkg.jenkins-ci.org)... failed: Temporary failure in name resolution.

wget: unable to resolve host address ‘pkg.jenkins-ci.org’

解決方法:

vim /etc/resolv.conf 添加一行 nameserver 8.8.8.8

HTML Publisher Plugin 插件在新的 Jenkins 版本中,打開生成的網頁中沒法加載 CSS、沒法點擊按鈕等狀況:

因爲 CSP(Content Security Policy)所致,可在 系統管理→腳本命令行 中執行:

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")

原文地址:https://xkcoding.com/2018/01/04/devops-jenkins.html
相關文章
相關標籤/搜索