持续集成之jenkins基础
Jenkins基本概念
- 基于JAVA開源的自動化系統平臺
- 在servlet容器中運行,如apache tomcat
- 提供CI,CD任務及流水線的服務
- 所有類型的任務:構建、測試、部署等
- apache ant和apache maven項目以及任意shell腳本和windows批處理命令
- 支持各種SCM源碼控制工具
- git,subversion,cvs,perforce,clearcase,rtc等
- 豐富的插件生態系統支持功能擴展
- 1400+插件,含SCM,測試,通知,報告,artifact,觸發,外部集成等
- 基于web的管理和使用界面
- 源于Hudson
- Hudson由Sum公司在2004年啟動,第一個版本基于2005在java.net發布
- 2010年11月期間,Oracle對Sun的收購,引起商標權之爭
- 2011年1月29日,項目名稱從"hudson"改為"jenkins"
Jenkins的使用原因
- jenkins本身就是一個高度可配置的系統
- 由開發者主導、面向開發者、全開源
- 治理(獨立董事會)和社區
- 穩定性
- LTS長期支持發布線
- 每三個月發布一次穩定版本
- 插件的平臺
- 1400多件插件
?
Jenkins的特點
- 免費且開源
- 與Jenkins共享了很多多代碼,安裝還是挺簡單的關鍵的環境變量可以安全存儲
- 支持多個SCM,包括SVM,Mercurial,Git
- 集成了Github和Bitbucket
- 高度可配置
- 資源和教程很多
- 安裝運行簡單
- 分布式的構建也能高效運行
- 可跨平臺部署
- 很多高質量的插件
- 得獎無數
- 龐大的社區
釋:SCM http://www.cnblogs.com/itech/archive/2011/08/02/2125032.html
?
Jenkins工作流程
創建一個項目時,操作選項
- 通用配置
- 工作空間管理,參數化設置,工具配置等全局管理
- 源碼管理
- 配置代碼源
- 構建觸發器
- 與版本控制服務器集成,自動觸發構建
- 或者基于其他項目生成輪詢,定時構建
- 構建環境
- 構建
- 運行shell腳本,python/groovy等腳本,ant/maven/gradle等
- 構建后操作
- 制品歸檔
- 發布JUnit測試結果和javadoc
- 直接部署到生產或測試環境
- 電子郵件(或即時工具IM等)通知相關人
- 觸發其他的子任務或者下游任務
?
Jenkins的使用對象
- jenkins是一個工具,任何人都可以很快上手
- 建議以下團隊或個人掌握jenkins
- 負責建設產品持續集成/交付流水線的人員(SCM,release/DevOps Engineer)
- 領導敏捷團隊的敏捷管理者,希望理解諸如持續集成/交付等概念
- 在DevOps領域內探索
- 想成為"jenkins developer"的開發人員、管理人員
?
Jenkins安裝和運行
- 支持以下平臺的OS
- docker
- war
- macOS
- Linux
- Windows
- Solaris,OmniOS,SmartOS
安裝準備
- 最低硬件需求
- 256MB內存
- 1GB磁盤空間(Docker安裝方式需要至少10GB)
- 推薦硬件需求
- 1GB + 內存
- 50GB + 磁盤空間
- 軟件需求
- Java 8 -JRE/JDK均可
- 注:Docker方式無需單獨安裝java
(1).Docker方式
- macOS/Linux
- windows
docker run -u root --rm -d -p 8080:8080 --name jenkinsci ^ -v jenkins-data:/var/jenkins_home ^ -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean- 打開瀏覽器 訪問http://localhost:8080 - 安裝完成后根據向導進行初始化配置(2).WAR文件安裝方式 - 推薦使用
- 本方式適用于任何java的操作系統或者平臺
- 下載最新的jenkins war包
http://mirrors.jenkins.io/war-stable/latest/jenkins.war
- 運行命令
- 打開瀏覽器訪問:http://localhost:8080
- 安裝完成后根據向導進行初化配置
(3).WAR文件安裝方式 -Java servlet containers
- 本方式適用于Jenkins部署到已經在Java servlet container內
- 可以運行Jenkins的Java servlet container為
- Glassfish
- Tomcat
- JBoss
- IBM WebSphere
- Jetty
- Jonas
- Weblogic
- Apache Geronimo 3.0
- Liberty profile
打開瀏覽器訪問: http://localhost:8080
安裝完成后根據向導進行初始化配置
(4)、windows安裝
- 下載最新msi安裝文件
http://mirrors.jenkins.io/windows/latest
- 解壓文件,雙擊msi根據指示進行安裝
- 打開瀏覽器 訪問http://localhost:8080
?
如何安裝插件
- 系統管理-插件管理-可選插件(有還沒安裝)
- 根據需要選擇安裝的插件
- 點擊直接安裝或下載待重啟安裝
?
job使用介紹
- job類型
- 配置SCM(source code management)
- git/svn
- 構建觸發器
?
主要的Job類型
- freestyle project
自由風格項目,jenkins最主要的項目類型
- maven project
maven項目專用,類似freestyle,更簡單
- multi-configuration project
多配置項目,適合需要大量不同配置(環境,平臺等)構建
- pipeline
流水線項目,適合使用Pipeline(workflow)插件功能構建流水線任務,或者使用freestyle project不容易實現的復雜任務
- multibranch pipeline
多分支流水線項目,根據SCM倉庫中的分支創建多個pipeline項目
?
Freestyle項目
- General
項目基本配置
項目名字,描述,參數,禁用項目,并發構建,限制構建默認node等
- Source code managemet
代碼庫信息,支持Git,Subversion等
- Build Triggers
構建觸發方式
周期性構建,poll scm,遠程腳本觸發構建,其他項目構建結束后觸發等
- Build Environment
構建環境相關設置
構建前刪除workspace,向Console輸出添加時間戳,設置構建名稱,插入環境變量等
- Build
項目構建任務
添加1個或者多個構建步驟
- Post-build Actions
構建后行為
Artifact歸檔,郵件通知,發布單元測試報告,觸發下游項目等
注:restrict where this project can run 限定這個項目只能在某個節點上運行
?
Source Code Manaagement
- git
- Subversion
- 其他80+插件支持其他SCM系統
?
Git 全局配置
- Build Node上安裝Git tool
- Global Tool Configuration配置
?
常用的Triggers
- Build periodically
設定類似Cron周期性時間觸發構建
- Poll SCM
設定類似Cron周期性時間觸發檢查代碼變化,只有當代碼變動時才觸發構建
- Hooks
gitlab hooks
github hooks
- Events
Gerrit events 時件觸發
?
安全管理策略
- 安全概述
- 認證和授權
- 訪問控制
- 忘記密碼處理
?
安全概述
1.X默認配置下,沒有開啟安全檢查(任何人都可以去查看)
2.X默認開啟安全檢查
Jenkins提供了兩種維度的安全策略
- 用戶認證
Security Realm(安全域):決定用戶名和密碼,且指定用戶屬于的組(允許的登陸用戶)
- 權限控制
Authorization Strategy(授權策略):分配用戶執行某些操作的權限
如何進入Jenkins安全控制界面:
系統管理(manage jenkins)-->configure global security -->啟用安全(enable security)
訪問控制詳述:
安全域:
Jenkins專有用戶數據庫:公司中用戶比較少的情況
公司規模使用人員多推薦使用AD或者LDAP
Servlet容器代理:比較老的或者容器代理的使用
授權策略:
Role-based strategy:設置創建一定的用戶策略,針對不同的用戶指定不同的角色,進行不同權限管理
任何用戶可以做任何事(沒有任何限制):即使沒有登陸
安全矩陣:設置一個安全的矩陣,比較復雜,推薦使用
登陸用戶可以做任何事:即使是管理員的操作
遺留模式:舊版本使用
項目矩陣授權策略:比較細的授權策略,創建項目的admin可以創建一些比較細的項目級權限限制
?
忘記密碼的處理
如果權限設置錯誤,或者忘記密碼,導致admin自己都無法登陸Jenkins的處理
- 命令行停止Jenkins
- 先備份$JENKINS_HOME中的config.xml
- 用編輯器打開$JENKINS_HOME中的config.xml
- 將<useSecurity>true</useSecurity>元素中的true改為false
- 將<authorizationStrategy>和<securityRealm>元素的內容刪掉
- 命令行啟動Jenkins
?
jenkins分布式構建
描述: 是一個master/slave的方式創建,通過tcp進行通信,對于master要求并不高,可以使用vm,container,服務器等做master或slave
配置分布式構建
1.在master創建分布式構建的節點
- 系統管理-管理節點-新建節點
- 標簽(輸入規范的名稱)
- 注意4種的啟動方法
- java web start: docker或k8s使用比較多
- execution of command on the master
- slave agents via ssh
2.配置分布式構建
- job的配置頁面-General
- Restrict where this project can be run 限定項目只能在某個節點上運行,如ios的項目只能在某一類的服務器中運行
- 輸入標簽
?
規范項目必要配置
注:本規范尤其適用于較多項目共同一jenkins的場景
- 項目命名規范
- 設置項目描述
- 設置歷史構建清理規則(節約磁盤空間)
- 設置構建節點Label
- 郵件通知
修改默認顯示語言:https://www.jianshu.com/p/f94d617e260e
?
常用插件
- Jenkins定時的備份:ThinBackup(備份在遠程服務器)
- 郵件發送插件:Email Extension Plugin
- 空間清理擴展插件: Distributed Workspace Clean plugin
- Android/IOS設備管理
- Android Device connector plugin
- IOS Device connector plugin
?
轉載于:https://www.cnblogs.com/reid21/articles/8853862.html
總結
以上是生活随笔為你收集整理的持续集成之jenkins基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 20165220 第七周学习总结
- 下一篇: Spring Cloud学习笔记-010