【Jenkins+Blue Ocean】docker部署Jenkins,編寫Jenkinsfile建立流水線,一篇解決“賊帶勁”

語言: CN / TW / HK

@[toc]

前言

作者主頁:https://blog.csdn.net/qq_48450494?type=blog 個人部落格:http://ygcloud.work/

Jenkins 是一個持續整合工具,可用於自動化與構建、測試、交付或部署軟體相關的各種任務。 Jenkins 可以通過本機系統包、Docker 安裝,甚至可以由任何安裝了 Java 執行時環境 (JRE) 的機器獨立執行。

持續整合工具還有Drone、Gitlab-CICD(gitlab內建cicd)還要kubesphere容器雲平臺也能做持續整合(CICD)kubesphere是藉助於Jenkins來實現CICD,本身沒有該功能。 本章就帶各位簡單搭建Jenkins和使用Jenkins+Blue Ocean及編寫Jenkinsfile流程。
Drone使用,請點選這裡【Drone+Gitlab】一條龍服務,直接起飛 — 從介紹->部署->配置->寫.drone.yml流水線+常見的報錯解決

學習kubesphere前,強烈建議閱讀【排坑指南之kubeSphere】2022年最新版-”kubeSphere3.2.1 Paas容器雲平臺“使用DevOps-CICD之”排坑指南“

準備篇

硬體要求 * 最小256MB記憶體, 推薦512MB以上 * 10GB硬碟空間

環境要求 - Linux系統 - docker - docker-compose

安裝使用docker-compsoe點這裡

操作篇

部署

這裡介紹了三種方式部署,其他方式部署(WAR包部署、yum部署); 下面我們使用 jenkinsci/blueoceanDocker映象執行,因為jenkinsci/blueocean集成了blueocean,省去Jenkins內部安裝blueocean外掛的步驟(方便快捷)。 1. 使用docker部署

bash docker run \ -u root \ -dit \ --name jenkins \ -p 8080:8080 \ -p 50000:50000 \ -v /var/jenkins-data:/var/jenkins_home \ -v /usr/bin/docker:/usr/bin/docker \ -v /var/run/docker.sock:/var/run/docker.sock \ jenkinsci/blueocean 引數解釋:

run: 啟動執行一個容器; -u:root身份啟動容器,具有root許可權; dit:後臺互動式方式執行容器(常用); --name:指定容器名稱為jenkins; -p:8080是Jenkins web訪問介面(容器的埠8080對映到主機上的埠8080);        基於JNLP的Jenkins代理通過TCP埠50000與Jenkins主站進行通訊(容器的埠50000 對映到主機上的埠50000); -v:/var/jenkins_home Jenkins主目錄,每次重新啟動Jenkins,會保持Jenkins當前狀態(存放Jenkins伺服器資料);        /usr/bin/docker 宿主機docker命令掛載給容器內使用(我們稱為:docker in docker方式);        /var/run/docker.sock Docker守護程式監聽通過基於Unix的套接字檔案,這裡用於與Dcoker守護程序通訊(不新增的話容器內docker命令,不能與守護程序通訊);

  1. 使用docker-comopse部署

不會docker-compsoe點這裡

在宿主機編寫docker-compose.yaml檔案,檔案內容如下; 下列引數具體意思和上述類似,這裡不過多贅訴;

bash version: '3' #定義版本 services: jenkins: container_name: jenkins image: jenkinsci/blueocean:latest user: root priveleged: true #開啟特權 ports: #定義對映埠 - 8080:8080 - 50000:50000 volumes: #定義掛載卷 - /var/jenkins-data:/var/jenkins_home - /usr/bin/docker:/usr/bin/docker - /var/run/docker.sock:/var/run/docker.sock 啟動docker-compose對應的檔案內容定義的services服務: ```bash $ docker-compose up -d #後臺啟動 [+] Running 2/2 ⠿ Network test_default Created 0.1s ⠿ Container jenkins Started 1.3s

``` docker-compose常用指令:

```bash $ docker-compose ps #檢視狀態資訊 NAME COMMAND SERVICE STATUS PORTS jenkins "/sbin/tini -- /usr/…" jenkins running 0.0.0.0:8081->8080/tcp, 0.0.0.0:50001->50000/tcp, :::8081->8080/tcp, :::50001->50000/tcp $ docker-compose down #停止後移除 [+] Running 2/2 ⠿ Container jenkins Removed 0.8s ⠿ Network test_default Removed

```

  1. kubernetes方式部署

參考地址:https://www.jenkins.io/doc/book/installing/kubernetes/

使用

  1. 瀏覽器訪問 宿主機ip+8080埠:

    出現如下頁面我們可以使用兩種方式檢視密碼:

在這裡插入圖片描述 - 檢視宿主機上的密碼檔案(圖片上是容器內的密碼檔案路徑) bash $ cat /var/jenkins-data/secrets/initialAdminPassword 3b1050b5ebbb4539a14588f0601e163b

  • 使用檢視jenkins啟動日誌方式,檢視密碼,如下圖(兩個星號中間) bash $ docker logs jenkins 在這裡插入圖片描述

  • 選擇安裝推薦的外掛 在這裡插入圖片描述 這裡需要等待幾分鐘(這裡如果出現錯誤,檢查一下網路是否可以上網): 在這裡插入圖片描述

  • 建立管理員使用者後,例項配置保持預設 在這裡插入圖片描述

流水線

建立多分支流水線

下面我們會使用多分支流水線、Jenkinsfile、Blue Ocean; - 多分支流水線建立時會檢查程式碼倉庫所有分支的流水線任務(Jenkinsfile); - 在建立流水線之前還需要明白一個概率叫Jenkinsfile,因為接下來的步驟在它基礎之上(核心); - Blue Ocean是Jenkins Pipeline視覺化介面,提高Jenkins使用者體驗;

官方定義:Jenkins Pipeline 用於將“簡單到複雜”的交付流程實現為“持續交付即程式碼”。Jenkins Pipeline 的定義通常被寫入到一個文字檔案中(稱為 Jenkinsfile ),該檔案可以被放入專案的原始碼控制庫中; 總結一句話:Jenkinsfile是一個文字檔案記錄Pipeline (流水線)的執行Job(任務)的步驟;

  • 建立多分支流水線:點選新建Item-->輸入任務名稱-->選擇多分支流水線-->點選確定,如下圖所示; 在這裡插入圖片描述在這裡插入圖片描述 在這裡插入圖片描述

  • 分支源:新增git倉庫地址-->建立jenkins憑證-->點選儲存;

    這裡倉庫地址使用的是國內gitee(碼雲)倉庫(拉取程式碼比較快),當然也可以使用github、gitlab、gogs等倉庫伺服器; 學習搭建gitlab個人倉庫伺服器,點選這裡

本案例使用的gitee程式碼倉庫地址(包含Jenkinsfile檔案內容)各位自行獲取吧!!! 在這裡插入圖片描述 點選儲存後,Jenins會自動掃描執行Jenkinsfile檔案任務;檢查輸出Log最後的狀態是否出現 Finished: SUCCESS 欄位(表示完成); 在這裡插入圖片描述 點選狀態檢視 在這裡插入圖片描述 開啟Blue Ocean檢視 在這裡插入圖片描述 Blue Ocean顯示所有Jenkinsfile的階段都成功完成(使用Blue Ocean建立流水線也是可以的) 在這裡插入圖片描述

總結

這裡的演示的Jenkinsfile很基礎,想深入學習Jenkinsfile請參考官方文件; 使用Jenkinsfile建立流水線的流程介紹完畢,各位快去試著學習部署自己的專案吧!!!

推薦閱讀

參考資料

https://www.jenkins.io/zh/doc/