這幾天在給公司內(nèi)部做一個jenkins的培訓(xùn),講解一些基本的Jenkins的功能和使用篓吁。順便把培訓(xùn)的內(nèi)容整理一下茫因,寫成了這個教程。
下面的教程都是使用的Jenkins 2.32.1 如果你使用的是其他的版本冻押,可能會有差別盛嘿。
1 Jenkins安裝與配置
1.1 安裝
Jenkins最簡單的安裝方式就是使用預(yù)先編譯好的war包。從 https://jenkins.io/download/ 頁面下載Generic Java Package包就可以了稿茉。
下載完畢后芥炭,運行命令
java -jar jenkins.war
就可以運行jenkins了。簡單明了园蝠!
在第一次運行Jenkins的時候,需要注意日志中會出現(xiàn)如下的信息:
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
9ad5910ea6c0406291f960bb10a10691
This may also be found at: /Users/afrag/.jenkins/secrets/initialAdminPassword
上面的日志里就是Jenkins自動生成的初始管理密碼蘸嘶,在后續(xù)的配置過程中要用到陪汽。
1.2 初始配置
打開瀏覽器,輸入地址 http://localhost:8080 就可以進入jenkins况增。 第一次使用jenkins的時候训挡,需要輸入jenkins密碼并進行初始配置歧强,頁面如下:
輸入初始管理密碼之后摊册,點擊Continue按鈕,進入下一頁茅特,選擇要安裝的插件棋枕。Jenkins的大部分的功能都是由插件來實現(xiàn)的,具體的我們在后面會講解兵睛。
可以默認安裝推薦的插件窥浪,也可以自行選擇要安裝的插件。這里我選擇的是 Select plugins to install寒矿,自行選擇要安裝的插件若债。在這里可以根據(jù)項目的需要蠢琳,安裝不同的插件啊终。當(dāng)日也可以在以后添加新的插件傲须。
在選擇插件頁面,除了默認的插件外例衍,我添加了:
- Throttle Concurrent Builds Plug-in
- Checkstyle Plug-in
- JUnit Plugin
- Build Pipeline Plugin
- Conditional BuildStep
- Role-based Authorization Strategy
- Publish Over SSH
- SSH plugin
選擇完插件之后已卸,點擊install,進入插件安裝頁面梦抢。插件安裝需要一段時間(視網(wǎng)速而定愧哟,在國內(nèi)通常不會太快哼蛆,你懂的)霞赫,大家可以去喝杯水,活動活動端衰。
安裝過程中,可能有些plugin會失敗惕味,多retry幾次把玉锌。
插件安裝完之后,會進入創(chuàng)建管理員用戶的界面禀倔,沒有什么好說的参淫。到這里,Jenkins的初始配置就完成了鞋既,可以正式使用了耍铜。
2 Jenkins的項目配置基礎(chǔ)
后續(xù)的構(gòu)建中,我們要使用到Maven和Git棕兼。關(guān)于Maven和Git的安裝伴挚,不在本教程的范圍之內(nèi)。
2.1 創(chuàng)建項目
在Jenkins首頁頁面左上角茎芋,點擊新建菜單,如下圖所示:
在新創(chuàng)建的項目中
- 輸入新項目的名稱HelloWorld(這個不能和其他的項目重名)帚呼。
- 選擇構(gòu)建項目的類型煤杀,我們這里使用“構(gòu)建一個Maven項目”
- 點擊OK,創(chuàng)建新的構(gòu)建項目
2.2 配置構(gòu)建項目
新的構(gòu)建項目創(chuàng)建好之后沈自,會自動進入項目配置的頁面。這個頁面總共分為9個部分忌怎,可以通過頁面上方的tab快速進入不同的部分酪夷,如下圖所示:
2.2.1 General配置
- 項目名稱:可以修改項目的名稱
- 描述:描述項目的作用和需要說明的東西
其他的選項都有相應(yīng)的說明晚岭,可以點擊相應(yīng)的問號(?)圖標(biāo)查看說明(說明都是英文,但是都不太困難)库说。目前我們暫時用不到片择,在后面的進階部分會對其中部分做講解。
2.2.2 源碼管理
源碼管理用來配置從哪里獲取要構(gòu)建的源代碼字管。這里我們選擇Git纤掸。選擇Git后,需要填入如下的信息:
- Repository URL:Git的Repository的地址
- Credential:訪問Git的身份認證的憑證,可以點擊右側(cè)的Add按鈕添加一個新的憑證酌壕,也可以選擇已有的憑證。我們這里通過Add添加一個新的憑證果港。關(guān)于添加憑證的詳細內(nèi)容糊昙,可以參考后面的進階部分的憑證相關(guān)的內(nèi)容。
-Branches to build: 這里可以選擇要拉取代碼的分支萝衩、tag等信息,從而獲取指定版本的代碼千劈。默認使用master分支牌捷。
2.2.3 構(gòu)建觸發(fā)器
構(gòu)建觸發(fā)器中的配置決定了我們的構(gòu)建項目什么時候會執(zhí)行。在使用Maven項目的時候暗甥,我們最常用的構(gòu)建觸發(fā)器有以下幾種:
- Build whenever a SNAPSHOT dependency is built:當(dāng)前項目所依賴的其他的SNAPSHOT組件構(gòu)建成功的時候撤防。
- Build after other projects are built : 當(dāng)指定的project構(gòu)建之后,構(gòu)建當(dāng)前project
- Build periodically:定時構(gòu)建
- Poll SCM:定時查詢是否有更新焰情,有更新則進行構(gòu)建
如果希望沒錯人工進行構(gòu)建剥懒,可以什么都不選。
我們這里選擇Poll SCM,設(shè)置如下圖所示:
上面的設(shè)置中验游,每15分鐘查詢一次代碼倉庫保檐,如果有代碼變化的話,就重新進行構(gòu)建夜只。
2.2.4 構(gòu)建
在maven項目中扔亥,我們采用maven來進行編譯、測試和打包旅挤。只需要指定pom文件,以及相應(yīng)的maven參數(shù)就可以了签舞。
2.2.5 部署
可以采用執(zhí)行shell命令的方式來進行部署。如下圖所示:
2.3 總結(jié)
在日常工作中吠架,jenkins用來做持續(xù)集成师妙,包括從源碼倉庫獲取代碼默穴、編譯、測試蓄诽、打包、部署乙埃。這些步驟都可以通過jenkins完成包券。
3 Jenkins的項目配置進階
前面講了最基本的jenkins實現(xiàn)持續(xù)集成的配置唁影。下面來講講常用的一些其他的“高級”一些的配置遇伞。
3.1 使用便利進行構(gòu)構(gòu)建
有些時候捶牢,我們需要在構(gòu)建中添加一些參數(shù)變量。例如:源碼的branch渐排、版本號等等灸蟆。
在Jenkins中,參數(shù)變量可以分為3類:
- 內(nèi)置變量
- 全局變量
- 局部變量
3.1.1 內(nèi)置變量
內(nèi)置的參數(shù)變量主要是和單次構(gòu)建相關(guān)的預(yù)先定義的變量吓歇。在前面的 2.2.5 節(jié)的“shell腳本進行部署”的圖例中杏慰,可以看到在下方有一個鏈接"the list of available environment variables",其中列出了所有可以使用內(nèi)置變量及其含義轰胁。
3.1.2 全局變量
全局變量就是所有的jenkins項目都可以引用的變量朝扼。在jenkins首頁,點擊左上角的“系統(tǒng)管理”菜單榛斯,然后在出現(xiàn)的頁面中選擇“系統(tǒng)設(shè)置”搂捧;在出現(xiàn)的頁面中,在如下圖所示的區(qū)域中王凑,就可以設(shè)置全局變量:
3.1.3 局部變量
局部變量在各個構(gòu)建項目內(nèi)部設(shè)置聋丝。在項目配置的General區(qū)域中,選中“參數(shù)化構(gòu)建”,就可以添加局部變量了百姓。如下圖所示:
3.1.4 變量的使用
在項目的配置中每篷,我們可以使用 ${變量名} 的方式來引用變量。(我的經(jīng)驗是在絕大部分地方可以使用子库,還是有一些插件的配置中不能使用變量)矗晃。
3.2 遠程部署
遠程部署通常分為以下幾個步驟:
- 關(guān)閉舊的程序
- 將新的程序包上傳到遠程機器
- 啟動新的程序
第二步可能有些小的變化,例如將程序包上傳到倉庫仓技,然后遠程機器從倉庫獲取等等俗他。但是萬變不離其宗。
這些步驟都可以通過ssh/scp來實現(xiàn)地沮。
需要指出的是,如果是通過ssh來遠程啟動應(yīng)用程序危融,在構(gòu)建關(guān)閉的時候雷袋,會自動關(guān)閉ssh所啟動的所有的進程。如果構(gòu)建的結(jié)果是需要長期執(zhí)行的(通常情況下都是這樣)蛋勺,那么我們可以結(jié)合指定BUILD_ID和使用nohup命令率寡,來保證程序在后臺運行。
3.3 觸發(fā)其他的構(gòu)建項目
正在撰寫乾蛤,請稍待捅僵。
3.4 清除舊的構(gòu)建
正在撰寫,請稍待上荡。
4 Jenkins安全
正在撰寫馒闷,請稍待。
6 Pipeline
正在撰寫逛薇,請稍待疏虫。