Jenkins是DevOps【(Development和Operations的混成詞)是一種重視“軟件開發人員(Dev)”和“IT運維技術人員(Ops)”之間溝通合作的文化、運動或慣例)】的重要一環,是一款開源的CI&CD軟件。也就是持續集成和持續交付。
Jenkins支持運行各種運行方式,無論是跑在macos、windows、linus或者docker等容器中,初始配置也都大同小異。所以這我這里主要介紹windows系統下直接跑一個安裝包的流程。
1、java環境必備。
java版本要大于等于11,低版本的很多插件都不支持。目前而言,裝個java11就夠了。
2、jenkins安裝
首先下載 Jenkins 通用 Java 包 (.war) (下載lts穩定版本)Download and deploy
雖然 Jenkins 服務不在 C 盤運行,但默認情況下,Jenkins 的工作空間、插件、日志等數據還是會存儲在 %USERPROFILE%\.jenkins(通常位于 C 盤用戶目錄下)。為了將這些數據也遷移到非 C 盤,您需要配置 Jenkins 的 JENKINS_HOME 環境變量。在jenkins的Java包目錄下打開命令行,執行
set JENKINS_HOME=E:\Jenkins\data (可選,配置jenkins工作空間目錄)
java -jar jenkins.war --httpPort=8080 (啟動jenkins)
正常情況下只要java安裝是正常的,就不會報錯。如果報錯,檢查你的java -version。
3、解鎖jenkins
瀏覽至http://localhost:8080 (這里的8080對應上邊的httpPort的字段,如果你8080端口被占用了,是可以寫其他的端口號的)
這時候會讓你輸入密碼,并且會告訴你密碼的位置。
添加圖片注釋,不超過 140 字(可選)
輸入密碼確認后會讓你安裝插件,可以根據自己需要安裝。
如果插件安裝報錯,也無需在意,多半是ssl/tls證書導致的插件下載失敗,直接繼續就好了。后邊會講解遇到這種問題怎么處理。
也可以直接點擊右上角關閉,就會提示你跳過了插件安裝和管理員用戶添加。
添加圖片注釋,不超過 140 字(可選)
點擊開始使用,你的jenkins就配置好了。
添加圖片注釋,不超過 140 字(可選)
4、管理員用戶
由于上一步我們跳過了管理員用戶,所以現在我們登錄默認的賬戶名為 admin,密碼是你剛才解鎖jenkins那個長長的密碼。如果嫌棄麻煩,就可以在左上角的people->admin->configure中重新配置用戶名和密碼。
添加圖片注釋,不超過 140 字(可選)
5、插件安裝。
jenkins很多功能都是需要插件的,jenkins有自己的插件管理器。就在面板的左上角Manager Jenkins->plugins下。
添加圖片注釋,不超過 140 字(可選)
我們可以嘗試安裝一個插件,看是否能成功。
插件安裝可能會因為網絡問題報錯,但大概率你會應為證書問題報錯。下圖就代表證書問題
添加圖片注釋,不超過 140 字(可選)
如果是證書的問題,那么我們可以直接裝一個跳過證書驗證的插件。但此時我們又無法下載插件,這時候我們可以直接去jenkins的插件官網下載一個,然后導入。(當然如果你不喜歡安裝跳過證書驗證的插件,也可以自行找到這個網站的證書,將其添加到信任庫,具體操作可自行搜索)
插件官網地址:Index of /download/plugins
通過全局搜索,ctrl+f 搜一下skip關鍵字,應該就能找到我們需要的插件。
添加圖片注釋,不超過 140 字(可選)
點擊下載最新版本。會得到一個.hpi文件。
在插件Advanced settings中找到導入插件,將下載的插件導入進去,就可以了。
添加圖片注釋,不超過 140 字(可選)
插件安裝后重啟一下jenkins,應該就可以下載插件了。
推薦兩個必裝插件 : Pileline(這也是我們要用的核心插件) Script Security
Script Security:如果打包因為沒有移動文件夾目錄的權限,可以安裝這個插件。
Pileline:Jenkins Pipeline(或簡稱“Pipeline”,大寫“P”)是一套插件,支持在 Jenkins 中實施和集成持續交付管道。
根據自己的需求安裝插件。
安裝插件的時候,往往很多時候插件都是互相依賴的,如果某個插件不能啟用,要看看是不是其他插件未安裝引起的。最好是在安裝完所有的插件確認全部都能啟用之后,再重啟jenkins打包構建實例。
插件如果有新的安裝,記得重啟Jenkins。不然自己寫好流水線命令一運行,Jenkins連git都不認識。
6、創建項目
環境搭建好了之后,就可以新建項目了,從主頁右上角點擊 NewItem,選擇pipeline創建一個HelloWorld項目。
添加圖片注釋,不超過 140 字(可選)
項目配置:點擊確認后就會進入項目配置界面,這里可以暫時都先不用管。只先寫一個描述。滾動到流水線配置哪里,選一個Hello World的模板。
添加圖片注釋,不超過 140 字(可選)
保存之后點擊左邊的 Build Now。就完成了第一個項目的構建。
點擊構建后的工程,可以看到詳細進程。如果打包出了問題,也是在這里查找定位。
添加圖片注釋,不超過 140 字(可選)
日常的項目需求,必然不會只讓你輸出一個helloworld。但我們一旦搭建好這個環境,流水線語法可以根據自己的項目去配置。例如是as工程,可以使用as的gradle語法去打包,也有相對應的插件。或者使用maven,ant等。
整體的流程代碼基本上就是這個結構。
添加圖片注釋,不超過 140 字(可選)
agent any 在 Jenkins Pipeline 的自動化框架中,用于指示一個 Pipeline 階段或任務可以在任意可用的執行環境中運行。如果你有用到分布式構建限定當前工程的代理,這里可以修改為其他的例如agent {label 'tag'},代表只能限定在標簽為tag的代理上打包。
environment表示可以使用的全局環境變量
parameters表示可選參數,也對應配置選項中的This project is parameterized,通常用于打包時傳入一些可選參數。
stages代表是很多stages。
添加圖片注釋,不超過 140 字(可選)
還有一些花里胡哨的插件,例如 Qy Wechat Notifcation這種,可以在構建成功或者失敗的時候給自己的企業微信發個消息之類。在stages后加一個post。就可以通過自己的群機器人進行推送了。
添加圖片注釋,不超過 140 字(可選)
7、分布式構建
目前我們上邊講的,都是跑在內置節點的,但是你的jenkins會給你發出警告,告訴你跑在內置節點是不安全的,推薦你設置分布式構建。具體為什么要設置分布式構建,可以看看jenkins給出的理由(Controller Isolation),總之就是關于安全,穩定之類一些的考量。
添加圖片注釋,不超過 140 字(可選)
當前跑在內置節點,是這樣的執行模式
添加圖片注釋,不超過 140 字(可選)
jenkins是支持分布式架構,分布式架構的模式是這樣的
添加圖片注釋,不超過 140 字(可選)
其實就是把內置節點當成一個管理,每次有任務都由它來進行分配,如果沒有空閑的代理,就先掛起在隊列中。
那怎么配置分布式構建呢?
為了不讓內置節點執行任務,我們可以設置內置節點的執行者為0。(當然如果你想要在沒有空閑的可執行節點時,使用內置節點構建,也可以不設置為0)
進入Manager Jenkins ->Nodes,點擊built-in Node
添加圖片注釋,不超過 140 字(可選)
再點擊配置,將執行者設為0
添加圖片注釋,不超過 140 字(可選)
這個時候我們執行剛才的helloworld項目,你的項目就會掛在隊列里,不會執行。
添加圖片注釋,不超過 140 字(可選)
此時需要新建一些節點,這些節點其實就是一個個代理。接受jenkins分配過來的構建任務。
添加圖片注釋,不超過 140 字(可選)
添加圖片注釋,不超過 140 字(可選)
點擊create,執行者數量設為>=1,畢竟為0你這個節點就沒什么意義了。配置可以根據自己實際情況填寫,需要注意的是label的配置,這里的字段就是你的代理名,上文說的使用 agent{label 'tag'}中的tag就是你這里配置的label,限定了工程只能在label=tag的代理上運行。這個的好處就是,你可以設置多個不同的代理,但每個代理只執行自己的工程。例如多平臺發布互不影響這樣子。
此時,你已經有了一個正常的jenkins構建環境了,配置好后,測試就可以自己出包進行測試了。當然它的功能也是很強大的,可以根據自己的需要深入研究,為自己的項目量身定制。