Jenkins改進(1)--介紹與安裝

jenkins介紹

Jenkins作爲業內運維運用最爲廣泛的工具,在於把傳統意義上的運維工作與開發工作完美地結合在一起,作爲傳統意義的從事運維工作的相關人員很多工作都在命令和腳本間遊走但工作內容就成了黑盒,如何管理如何協同是我們需要考慮的問題,Jenkins在運維工作中起到了承上啓下的工作,它的前臺界面方便我們直觀的收集執行的job的所有相關信息,最終實現高效、可擴展、全自動的部署平臺

  • Jenkins是一個開源持續集成工具,提供了軟件持續集成開發的服務,支持很多的主流軟件配置管理工具與其配和實現軟件配置管理持續集成功能
  • 開發工具:Java
  • 功能:提供了軟件開發的持續集成服務
  • 特點:支持主流軟件配置管理,配合實現軟件配置管理,持續集成功能

jenkins的優勢和應用場景

優勢:

  • 是主流的運維開發集成平臺,兼容所有主流開發環境,可以將平時開發、測試、部署、基礎運維濃縮到每一個job當中配合其強大的兼容性匹配目前大中小工作當中所有的開發環境,無論是Linux下的centos、Redhat、Windows、docker虛擬機都可以在這些平臺下搭建Jenkins系統這樣Jenkins就可以完全涵蓋所有的主流開發環境,保證我們不同的開發環境都能在Jenkins上正常運轉
  • 插件市場可海量業務主流開發工具實現集成,Jenkins內嵌強大的插件平臺,能夠與海量業務主流開發工具實現集成,方便將不同類型的數據在開發工具中調用處理,Jenkins之所以稱之爲持續集成系統工具優勢在於能夠利用其強大的內嵌插件市場平臺下的集成插件與主流開發工具實現系統工具間的數據調用,幫助我們將不同工具的功能通過API或者命令行的形式在Jenkins下運轉執行,例如我們可以調用gitlab或者GitHub的插件去與其進行git的數據交互實現克隆、抓取、推送等操作可以利用插件給Jenkins傳入倉庫地址,去(??)在實現代碼靜態掃描,最終生成的報告可以檢查代碼的語法是否不規範、是否有bug、缺陷等有助於開發人員提高代碼質量,通過meavn插件傳入對應的參數對代碼實現編譯、測試、打包並最終上傳到代碼倉庫
  • Jenkins job爲配置單位與日誌管理,使運維與開發人員能協同工作 #Jenkins以job爲配置單位及日誌管理打開了運維與開發人員間的黑盒,所有人都可以通過對某一個job的操作配置得到自己想要獲取的信息,作爲開發或者測試人員,在Jenkins平臺可以無需關注如何搭建這個平臺以及job配置部署如何實現,只需要將項目所需要的參數傳給Jenkins下對應項目的具體job,Jenkins就會幫助完成所有的部署,這樣就能讓開發測試人員更多的關注到項目代碼的實現與項目測試當中無需花費時間到部署工作中,作爲運維人員就可以關注具體的平臺搭建工作,通過監控Jenkins系統的相關指標保證Jenkins在一個健康狀態下運轉以及關注項目部署過程中出現的權限、參數配置、工作調用等問題,從而無需關注代碼層面的問題
  • 權限管理劃分不同job不同角色 #Jenkins嚴謹的權限管理功能,充分的劃分了每個人在開發週期內對每一個job的不同角色,可以設定不同的用戶登錄系統後具有不同的權限,例如開發與測試j只能有job任務field以及查看日誌的權限從而對代碼日常的測試部署等操作,運維人員在開發人員的基礎上對job任務具有寫入的權限,從而進行日常的任務編寫,這樣就可以保證大家不會越權去操作別人的任務,提高項目的安全性
  • 強大的負載均衡功能,保證我們項目的可靠性 #Jenkins強大的負載均衡功能,可以讓job遊走在Jenkins集羣當中,保證我們具體開發中的可靠性,Jenkins不僅僅是一個獨立的系統,他可以在創建後作爲一個master節點然後衍生出若干個子節點,從而組合到一起組成一個Jenkins集羣,這個集羣的優勢在於可以將job任務隨機或者手動指定到任意master或者子節點去執行,最終實現強大的負載均衡功能

Jenkins安裝配置管理

  • 使用virtualbox創建測試服務器
  • 安裝Jenkins前的環境準備(centos7)
  1. 添加Jenkins的yum倉庫源,以及導入key保證我們可以利用centos7下的包管理工具直接在線安裝Jenkins系統
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo

rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key #驗證倉庫安全性
  1. 保證系統java版本爲8.0或8.0以上 #保證Jenkins可以調動本地java環境啓動服務
yum -y install java
java -version #java 1.8以上
  1. 關閉系統防火牆
systemctl stop firewalld
systemctl disable firewalld
  1. 關閉SELINUX並重啓系統
vim /etc/sysconfig/selinux
SELINUX=disabled

reboot

Jenkins安裝與初始化配置

  1. yum源安裝Jenkins最新版本
yum -y install jenkins
  1. 創建Jenkins系統用戶
useradd deploy #作爲Jenkins的系統服務用戶,創建爲Jenkins也可以

  1. 更改Jenkins啓動用戶與端口
JENKINS_USER="deploy" #系統服務用戶
JENKINS_PORT="8080" #對外訪問端口
chown -R deploy:deploy /var/lib/jenkins/ #更改文件權限
chown -R deploy:deploy /var/log/jenkins/
  1. 啓動Jenkins
systemctl start Jenkins
lsof -i:8080
  1. 實驗需要,添加本地主機hosts解析

Jenkins 網頁操作

  • 根據提示登錄
    在這裏插入圖片描述

  • 讓Jenkins自動安裝需要的插件,可能會比較慢
    在這裏插入圖片描述

  • 修改管理員密碼
    在這裏插入圖片描述

  • 佈局

新建任務 #創建一個新的Jenkins job任務
用戶 #創建Jenkins用戶
構建歷史 #查看所有的build的構建的log記錄
系統管理 #管理系統的配置選項
我的視圖 #和新建視圖可以理解爲自定義創建一個視圖界面,自定義管理界面的佈局
憑據 #添加ssh key公鑰或者比如gitlab的密碼
新建視圖
構建列表 #顯示所有的構建,當有若干個任務需要等待執行的時候,所有的任務都在在這裏排隊等待
構建執行狀態 #正在執行的任務都會在這裏顯示

在這裏插入圖片描述

Jenkins系統管理

  • 系統設置定義全局參數配置

    • 比如,系統消息,系統時間格式,系統內嵌的gitlab、shell、pipeline、email郵件通知等插件參數配置
  • 全局安全配置,配置全局的賬戶安裝

    • 可以設定用戶是否可以註冊以及用戶註冊的權限策略、代理設置等相關選項
    • 項目矩陣授權策略,配置Jenkins用戶對job的讀寫,視圖查看等權限配置
      在這裏插入圖片描述
  • 管理插件,在線更新安裝第三方插件

  • 系統信息,查看Jenkins本機相關的信息如環境變量、插件列表等相關信息

  • 系統日誌,獲取Jenkins的實時運行數據,出現問題時可以debug追蹤

  • 負載統計,查看動態座標圖查看當前任務負載情況,從而獲取Jenkins健康狀況

  • 管理用戶,創建,刪除,修改Jenkins的用戶
    在這裏插入圖片描述

Jenkins job介紹

  • 代表一個任務或者項目,Jenkins做一個持續集成工具,其實是由若干個job任務或者project項目構成了一個強大的運維開發平臺系統,可以將平時的開發、測試、基礎運維工作相關任務通過創建一個任務或項目保存在Jenkins任務列表中,方便我們在Jenkins平臺下進行日常運維開發工作
  • 可配置與可執行,在Jenkins平臺下我們的工作可以利用其內嵌模塊或者特定語法將我們的工作抽象陳Jenkins job,在這個任務裏通過配置相關的任務參數以及工具模塊從而作爲一個可執行的任務,最終共享保存到我們的Jenkins平臺下,供我們的日常工作中有不同權限的人員重複build構建執行,這樣就可以將單機圖形界面或者命令行腳本去配置執行我們的任務遷移到Jenkins這個共享平臺下去進行統一化的任務配置執行,就簡化了工作流程,方便日常進行統一的維護管理工作
  • 執行後的記錄稱之爲build,每一次執行完結果的記錄稱爲build構建,通過查看build構建獲取到結果信息
  • 日誌監控與記錄,job任務執行完後build的構建信息會保存在Jenkins上作爲build log日誌,可以通過查看不同時間的log記錄,從而debug追蹤構建任務中出現的各種問題,Jenkins後臺也會通過build log的數量、大小從而監控當前Jenkins的健康狀況
  • 所有文件集中保存,Jenkins下所有的任務構建後的所有相關文件,例如克隆的倉庫代碼maven打包生成的編譯包,我們配置的參數文件都會保存在Jenkins的主目錄workspace下以我們當前命名的一個目錄作爲我們這個的job workspace工作區域進行保存,查看這個區域下的相關文件去定位日誌信息無法獲得的問題細節

Jenkins Freestyle與pipeline job區別

  • Freestyle job:

    優點:

    1. 通過在其任務配置界面添加相應的模塊配置項與任務參數就可以構建一個工作需求,Jenkins默認在任務界面佈局所有模塊以及參數配置項,我們只需要點擊即可創建一個任務項
    2. 使用邏輯簡單,無需花費額外成本去研究實現一個功能

    不足:

    1. 每個freestyle job只能實現一個功能,只能在job裏做一件事,這樣就降低了任務執行效率

    2. freestyle job配置只能通過前臺手動完成,無法通過編寫一段代碼去實現freestyle job的功能,創建配置起來會很直觀但是不利於job遷移到其他Jenkins系統上,

    3. 默認的Jenkins沒有一套審計機制去記錄和保存所有人的配置歷史,無法知道誰曾經動過代碼
      在這裏插入圖片描述

  • pipeline job:

  • 實現匹配持續集成與持續交付概念

  • 持續集成:CI,通過代碼倉庫與Jenkins集成使我們開發人員的每一次代碼提交都能夠在Jenkins上自動build構建,幫助開發團隊第一時間發現解決問題

  • 持續交付:CD,在持續集成的基礎上將構建好的軟件版本通過Jenkins的自動化測試部署等多個程序持續安全快速的交付的用戶手中

  • Jenkins下的所有模塊,參數配置都可以在pipeline下體現爲一個腳本語句,非常方便就可以調用一個pipeline模塊去編寫業務邏輯

  • Jenkins可以編寫多個stages作爲項目集成部署過程中的每一個階段構成一整套管道工作集,串聯所有工作

  • pipeline所有配置都可以體現爲一個代碼,方便job任務的配置遷移及對所有改動進行版本控制,將所有項目腳本改動都可以定位到代碼層面上,方便後期的審計工作

  • 使用者需要學習pipeline腳本語法
    在這裏插入圖片描述

freestyle方便配置但不便於管理維護,pipeline方便項目管理但相對需要一些學習成本

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章