1. 程式人生 > 程式設計 >json檔案書寫格式詳解

json檔案書寫格式詳解

1.1 拉取Jenkins映象

進入官網:https://jenkins.io/download/
點選Docker進入Docker Hub

我們這裡選擇jenkins/jenkins:lts版本的Jenkins,因為Jenkins:latest版本是官方版本,而且是英文的,下載外掛什麼的因為牆的各種原因導致無法下載和下載報錯

複製紅框中的命令:docker pull jenkins/jenkins:lts拉取映象,如果下載映象比較慢可以考慮給docker設定一個映象加速【推薦使用aliyun的,不會的可以百度一下】

配置 Docker 映象站(此命令可以加速下載)

Linux

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

該指令碼可以將 --registry-mirror 加入到你的 Docker 配置檔案 /etc/docker/daemon.json 中。適用於 Ubuntu14.04、Debian、CentOS6 、CentOS7、Fedora、Arch Linux、openSUSE Leap 42.1,其他版本可能有細微不同。

在伺服器上輸入命令:

docker pull jenkins/jenkins:lts
  • 1

注意檢視 docker映象中,Jenkins版本是否是最新版

命令:

docker inspect b137a5753eb1
  • 1

1.2 建立目錄
為了方便後期Jenkins中配置檔案的修改,同時,防止jenkins中重要檔案因為容器損毀或刪除導致檔案丟失,因此需要將/var/jenkins_home目錄對外掛載

mkdir -p /apps/devops/jenkins


對目錄開放docker程序操作的完全讀寫的許可權

chmod 777 /apps/devops/jenkins

1.3 啟動容器

docker run -itd -p 9003:8080 -p 9004:50000  --restart always -v /apps/devops/jenkins:/var/jenkins_home --name jenkins  jenkins/jenkins:lts

-p 埠對映:Jenkins是Java程式,預設埠是8080

1.4 開啟Jenkins管理頁面

訪問地址:

http://192.168.143.128:9003
  • 1

出現如上頁面,代表jenkins啟動成功。

1.5 檢視日誌獲取初始密碼

命令:

docker logs -f jenkins
  • 1

複製如下圖中紅框內的初始密碼
當然,你也可以不通過日誌檢視,你可以進入黃色框中描述的檔案檢視初始密碼也是一樣的,二選一

將密碼複製、貼上到如下框框中,進入jenkins,需要等待數十秒(可能更久)!

如果出現下圖情況,等很久,還沒有進入

解決方案:
① 進入我們前面掛載的Jenkins目錄 /apps/devops/jenkins,執行命令:

vi hudson.model.UpdateCenter.xml

② 將檔案hudson.model.UpdateCenter.xml中https://updates.jenkins.io/update-center.json改成http://updates.jenkins.io/update-center.json(把https改成http)

③ 儲存,重啟Jenkins容器

  1. [root@localhost jenkins]# docker restart jenkins
  2. jenkins
  3. [root@localhost jenkins]#

④ 重新進入Jenkins管理頁面:http://192.168.142.128:9003(稍等一會兒,就可以進入步驟6.安裝建議的外掛頁面)

1.6 安裝推薦的外掛

如下圖所示,左側顯示安裝推薦的外掛,右側選擇自定義安裝外掛。

我們選擇安裝推薦的外掛,點選左側的(中間可能會安裝很長時間。有時候卡住不動了的話,可以重新啟動kenkins在輸入密碼進入,沖洗重新整理下載下列外掛)

如果全部都能正確安裝,則會自動進入如下圖介面

將資訊輸入對應輸入框內,點選儲存並完成,進入如下圖所示

1.7 成功安裝Jenkins

預設,點選儲存並完成,OK,這就算搭建成功了(因為我是在VMware CentOS7上使用Docker搭建的Jenkins,GitLab,gitlab又非常耗費資源,所以可能會卡住不動,重啟一下Jenkins就可以了),如圖

2. 配置Jenkins

2.1 設定Jenkins時區為北京時間

點選系統管理——指令碼命令列

輸入指令碼並執行:

System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')
  • 1

如圖顯示Result表示成功

2.2 安裝自動化構建和部署所需的外掛

所需外掛:【Maven Integration】、【Pipeline Maven Integration】、【Gitlab】、【Gitlab hook】、【SSH】、【Publish Over SSH】

進入系統管理——外掛管理

① 安裝Maven外掛:點選可選外掛——過濾MavenIntegration外掛——勾選Maven Integration和Pipeline Maven Integration——點選直接安裝

如圖,開始安裝Maven外掛

② 安裝Gitlab外掛:點選可選外掛——過濾Gitlab外掛——勾選Gitlab和Gitlab hook——點選直接安裝

如圖,開始安裝Gitlab外掛

③ 安裝SSH外掛和Publish Over SSH外掛:點選可選外掛——過濾SSH外掛——勾選SSH和Publish Over SSH——點選直接安裝

安裝Publish Over SSH外掛的原因:因為本方式是使用docker啟動jenkin服務,所以在jenkins後續執行構建任務時候,需要在build成功後,將服務的jar包[以spring boot]服務為例,需要將jar包拷貝到Dockerfile所在伺服器的指定目錄,進行微服務的啟動;所以,此處需要配置SSH伺服器的連線,意思就是在jenkins的任務結束後,去執行指定的伺服器上的shell命令,做spring boot或cloud服務的映象的構建,容器的執行,等一系列的事情


如圖,開始安裝SSH外掛

外掛全部安裝完成後,可以重啟一下Jenkins

2.3 新增憑據

點選新增憑據——輸入宿主機伺服器的使用者名稱和密碼

點選確定後

2.4 配置SSH remote hosts

這個配置是幹什麼的呢?配置SSH連線Dockerfile所在伺服器的相關資訊,並新增憑證,最後測試連線並儲存,以備後面使用!!!

點選系統管理——系統設定

找到配置——下拉選擇SSH remote hosts

如下圖,輸入對應的資訊,並校驗是否連線成功!成功後,點選應用——點選儲存

2.5 全域性工具配置

由於我們要實現的是SpringBoot專案的自動化部署操作,所以需要安裝JDK、Git、Maven、Docker

2.5.1 安裝JDK

可以安裝多個,根據專案JDK版本需求

輸入自定義JDK名稱——勾選自動安裝——輸入Oracle賬戶、密碼——選擇JDK版本——勾選同意協議

2.5.2 安裝Git

輸入自定義Git名稱——勾選自動安裝

2.5.3 安裝Maven

輸入自定義名稱——勾選自動安裝——選擇版本

2.5.4 安裝Docker

輸入自定義名稱——勾選自動安裝

最後,點選應用——點選儲存,OK,完成

那這些在什麼時候才真正的安裝了呢?

是在初次使用到JDK或Maven的時候,才會去自動安裝

2.6 全域性安全配置

點選系統管理——全域性安全配置

去掉防止跨站點請求偽造前的勾——點選應用——儲存

這裡要說明一下為什麼去掉這個勾選:

webhooks與jenkins配合使用時提示:HTTPStatus403-Novalidcrumbwasincludedintherequest,這是因為jenkins在http請求頭部中放置了一個名為.crumb的token。在使用了反向代理,並且在jenkins設定中勾選了“防止跨站點請求偽造(Prevent Cross Site Request Forgery exploits)”之後此token會被轉發伺服器apache/nginx認為是不合法頭部而去掉。導致跳轉失敗。

2.7 關於webhook

這裡需要宣告一下:

  1. 1.webhook網路鉤子
  2. 可以看成是一個callback 回撥方法
  3. 本回調方法核心即包含:
  4. 觸發條件+可供觸發的URL+密碼(可選)
  5. 觸發條件為:push、merge、PR(即New Pull Request)等等git操作,
  6. 比如你提交一個push操作,就會觸發URL請求,會以POST請求去請求這個URL。
  7. 除此以外,你還可以自己指定這個POST請求的資料格式。(JSON,x-www-form-urlencoded等)。
  8. 2.webhook是gitlab端的
  9. 觸發webhook的條件,可以自行配置,都是本地對gitlab的git操作
  10. 觸發後去請求的URL地址,是Jenkins提供的。也就是觸發後是去請求Jenkins的
  11. 3.而實現程式碼從gitlab到jenkins到自動部署,webhook就是gitlab和jenkins之間的關鍵點。
  12. 後續會先配置jenkins,以獲取到URL和Token,拿著這兩個東西去gitlab配置webhook,即可。
  13. 同時,webhook本身還會有很多的觸發條件可以勾選。後續步驟可見!

3. 新建Jenkins任務
3.1 點選新建任務,輸入名稱【本處輸入名稱注意】
【注意,本名稱一般和專案名稱一致,因為本名稱會在jenkins工作空間下生成目錄,類似於IDEA或Ecplise的工作空間的概念】

【所以,一般情況下,保證本名稱=專案名稱=docker映象名稱=docker容器名稱 這樣能儘可能的減輕jenkins配置的shell命令的複雜性!從而形成一定的規範!!】

選擇構建一個Maven專案【因為是springboot的服務】

3.2 原始碼管理

輸入描述資訊,原始碼管理選擇Git,從gitlab複製克隆地址貼上到Repository URL中,沒有報錯就表示OK的,(注意,這裡我是克隆HTTP方式的地址,如果你是克隆SSH方式的地址,你需要新增Creadentials,配置個API Token就可以了)

3.3 構建觸發器

這裡會獲取到文章開始提到的URL和Token,這兩個東西需要記錄下來,供gitlab配置webhook使用

點選高階,拉下來找到Generate並點選,生成一串Secret Token:24d90d26b374ae2df2cda01c17338843(拿小本本記一下這個Token,等下跟上面的URL都會用到的)

3.4 新增webhook

前往gitlab,進入要構建的專案,在setting中選擇Integrations,輸入URLSecret Token這兩在上面圖中已經給你標註了,去掉Enable SSL verification的勾選

根據自己的需求,勾選webhook的觸發事件都有哪些

點選Add webhook,如圖表示成功添加了webhook

3.5 構建環境

勾選Add timestamps to the Console Output,等下可以看到控制檯列印的資訊,這個根據自己的需求勾選哈

3.6 Pre Steps(構建之前的步驟)
配置前一步需要做的事情是:清理本專案在jenkins的workspace中的歷史資料夾

你可以不用知道WORKSPACE具體的地址在哪裡,因為下方有連結可以檢視到當前jenkins中有哪些可用的變數供你使用

預設WORKSPACE地址:/var/jenkins_home/workspace(如果你jenkins是docker啟動的,並且掛載了目錄在宿主機,那你在宿主機也是可以看到的,即 /apps/Devops/jenkins/workspace)

本處選擇是是,執行shell,則表示本處配置的shell命令,是預設在jenkins容器中執行的,而不是在宿主機上

下拉選擇執行 shell

開啟可用的環境變數列表看看,WORKSPACE是我們要的

在執行 shell的命令中輸入以下命令,設定全域性變數

  1. SERVER_NAME_1=springboot
  2. echo"=========================>>>>>>>工作空間WORKSPACE的地址:$WORKSPACE "
  3. cd$WORKSPACE
  4. echo"=========================>>>>>>>進入工作空間WORKSPACE,清除工作空間中原專案的工作空間$SERVER_NAME_1 "
  5. rm -rf$SERVER_NAME_1
  6. echo"=========================>>>>>>>清除工作空間中原專案的工作空間$SERVER_NAME_1 ......成功success"

注意:本處的SERVER_NAME_1=springboot 是配置專案的名稱

3.7 Build(構建)

我們是springboot專案,所以用到maven,這裡設定一下全域性操作,clean專案,並打成jar包,所以這裡輸入:

clean package

3.8 Post Steps(執行任務)
只在jenkins構建成功後,才執行這一步

因為最後的構建成功的maven專案的jar包是以docker啟動服務為目的,所以最後的docker操作,一定是在jenkins容器以外的伺服器上執行的,可能是本機宿主機,也可能是遠端的伺服器,這個根據自己的情況去配置

本處選擇,在遠端的SSH執行shell指令碼

選中只有構建成功才執行這些命令,然後選擇Execute shell script on remote host using ssh

建立SSH執行命令,命令內容太多了,從建立資料夾和Dockerfile到docker容器執行,有需要的自己去下載,SSH執行命令下載地址(可以私聊找我要)

OK,到這裡基本的任務已經新建成功,至於後續的兩個步驟,根據自己的需求自行配置,沒有難度的

點選應用,儲存

3.9 測試

測試push事件觸發自動化構建和部署

前往gitlab,剛我們新增的webhook,點選test下拉選擇push events,出現HTTP 200表示OK了

回到Jenkins可以看到任務列表,進入任務列表中的springboot,可以看到構建歷史

點選構建歷史中的其中一個任務,可以看到真正構建中

點選控制檯輸出,可以看到執行的命令都在控制檯輸出了

看到控制檯輸出最後顯示:SUCESS表示成功了

在伺服器上執行命令

docker ps

可以看到我們啟動起來的springboot容器

在瀏覽器輸入:http://伺服器ip:9009/test即可訪問剛自動部署的專案

4. 參考資料

https://blog.csdn.net/cjiankai/article/details/98213024?utm_source=app

後記:配置傳送郵件:

完成基於jenkins的持續整合部署後,任務構建執行完成,測試結果需要通知到相關人員。這篇部落格,介紹如何在jenkins中配置郵件通知的方法。。。

一、安裝郵件外掛

由於Jenkins自帶的郵件功能比較雞肋,因此這裡推薦安裝專門的郵件外掛,不過下面也會順帶介紹如何配置Jenkins自帶的郵件功能作用。

可以通過系統管理→管理外掛→可選外掛,選擇Email Extension Plugin外掛進行安裝:

由於我已經安裝了該外掛,因此這裡顯示在已安裝目錄下,還未安裝的童鞋可以通過右上角的搜尋框搜尋改外掛,然後線上安裝,安裝好之後重啟Jenkins。

二、系統設定

通過系統管理→系統設定,進行郵件配置:

1、設定jenkins地址和管理員郵箱地址

2、設定發件人等資訊

PS:這裡的發件人郵箱地址切記要和系統管理員郵件地址保持一致(當然,也可以設定專門的發件人郵箱,不過不影響使用,根據具體情況設定即可)

上圖的預設收件人郵箱可以新增多人,中間用英文半形逗號隔開即可。

3、配置郵件內容模版

附:郵箱內容模版(Default Content):

  1. <!DOCTYPEhtml>
  2. <html>
  3. <head>
  4. <metacharset="UTF-8">
  5. <title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次構建日誌</title>
  6. </head>
  7. <bodyleftmargin="8"marginwidth="0"topmargin="8"marginheight="4"
  8. offset="0">
  9. <tablewidth="95%"cellpadding="0"cellspacing="0"style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
  10. <tr>
  11. 本郵件由系統自動發出,無需回覆!<br/>
  12. 各位同事,大家好,以下為${PROJECT_NAME }專案構建資訊</br>
  13. <td><fontcolor="#CC0000">構建結果 - ${BUILD_STATUS}</font></td>
  14. </tr>
  15. <tr>
  16. <td><br />
  17. <b><fontcolor="#0B610B">構建資訊</font></b>
  18. <hrsize="2"width="100%"align="center" /></td>
  19. </tr>
  20. <tr>
  21. <td>
  22. <ul>
  23. <li>專案名稱 : ${PROJECT_NAME}</li>
  24. <li>構建編號 : 第${BUILD_NUMBER}次構建</li>
  25. <li>觸發原因: ${CAUSE}</li>
  26. <li>構建狀態: ${BUILD_STATUS}</li>
  27. <li>構建日誌:<ahref="${BUILD_URL}console">${BUILD_URL}console</a></li>
  28. <li>構建 Url :<ahref="${BUILD_URL}">${BUILD_URL}</a></li>
  29. <li>工作目錄 :<ahref="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
  30. <li>專案 Url :<ahref="${PROJECT_URL}">${PROJECT_URL}</a></li>
  31. </ul>
  32. <h4><fontcolor="#0B610B">失敗用例</font></h4>
  33. <hrsize="2"width="100%" />
  34. $FAILED_TESTS<br/>
  35. <h4><fontcolor="#0B610B">最近提交(#$SVN_REVISION)</font></h4>
  36. <hrsize="2"width="100%" />
  37. <ul>
  38. ${CHANGES_SINCE_LAST_SUCCESS, reverse=true, format="%c", changesFormat="<li>%d [%a] %m</li>"}
  39. </ul>
  40. 詳細提交:<ahref="${PROJECT_URL}changes">${PROJECT_URL}changes</a><br/>
  41. </td>
  42. </tr>
  43. </table>
  44. </body>
  45. </html>

4、設定郵件觸發機制

上面的幾步完成後,點選應用,儲存即可。

5、配置Jenkins自帶的郵件功能

配置內容如下,和Email Extension Plugin外掛同樣的配置,可以通過勾選通過傳送測試郵件測試配置按鈕來測試配置是否成功傳送郵件,如下圖:

完成上面的系統設定後,點選儲存即可。

三、專案配置

在完成系統設定後,還需要給需要構建的專案進行郵件配置。

1、進入專案配置介面

進入新建的專案介面,點選配置按鈕,進入系統配置頁面:

2、配置構建後操作模組

進入系統配置頁面後,點選上方的構建後操作選項,配置內容如下:

進入構建後操作的模組,然後會看到下面的內容,具體的配置資訊如圖中標註:

接上圖:

配置內容預設即可,郵件內容型別可以根據自己的配置選擇,收件人列表可以從前面的系統設定中預設收件人選項配置。

四、構建觸發郵件測試

如下圖,為我收到的測試郵件,郵件內容可以通過系統設定裡面進行個性化的配置,可參考我上面的模板,或者自定義即可。

參考:

https://www.cnblogs.com/imyalost/p/8781759.html

下面是我的郵件配置

在這裡掃碼獲取密碼

上圖是系統的配置

下面是專案構建後的操作通知(這是我自己的圖,可以參照下)

轉自:https://blog.csdn.net/hunheidaode/article/details/104003270?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase