下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
-.z.利用Jenkins生成maven項目鏡像及容器導(dǎo)讀:本文根據(jù)天云軟件研發(fā)工程師12月28日在Dockone技術(shù)社區(qū)的分享整理而成,文章結(jié)尾處有社區(qū)問答具體容。以下是分享詳情:一、Jenkins是什么目前持續(xù)集成(CI)已成為當(dāng)前許多軟件開發(fā)團隊在整個軟件開發(fā)生命周期側(cè)重于保證代碼質(zhì)量的常見做法。它是一種實踐,旨在緩和和穩(wěn)固軟件的構(gòu)建過程。并且能夠幫助您的開發(fā)團隊?wèi)?yīng)對如下挑戰(zhàn):1、軟件構(gòu)建自動化:配置完成后,CI系統(tǒng)會依照預(yù)先制定的時間表,或者針對*一特定事件,對目標(biāo)軟件進行構(gòu)建。2、構(gòu)建可持續(xù)的自動化檢查:CI系統(tǒng)能持續(xù)地獲取新增或修改后簽入的源代碼,也就是說,當(dāng)軟件開發(fā)團隊需要周期性的檢查新增或修改后的代碼時,CI系統(tǒng)會不斷確認(rèn)這些新代碼是否破壞了原有軟件的成功構(gòu)建。這減少了開發(fā)者們在檢查彼此相互依存的代碼中變化情況需要花費的時間和精力。3、構(gòu)建可持續(xù)的自動化測試:構(gòu)建檢查的擴展部分,構(gòu)建后執(zhí)行預(yù)先制定的一套測試規(guī)則,完成后觸發(fā)通知(Email,RSS等等)給相關(guān)的當(dāng)事人。4、生成后后續(xù)過程的自動化:當(dāng)自動化檢查和測試成功完成,軟件構(gòu)建的周期中可能也需要一些額外的任務(wù),諸如生成文檔、打包軟件、部署構(gòu)件到一個運行環(huán)境或者軟件倉庫。這樣,構(gòu)件才能更迅速地提供給用戶使用。Jenkins是一個可擴展的持續(xù)集成引擎。主要用于:持續(xù)、自動地構(gòu)建/測試軟件項目以及監(jiān)控一些定時執(zhí)行的任務(wù)。其擁有的特性包括:1、易于安裝-只要把jenkins.war部署到servlet容器,不需要數(shù)據(jù)庫支持。2、易于配置-所有配置都是通過其提供的web界面實現(xiàn)。3、集成RSS/通過RSS發(fā)布構(gòu)建結(jié)果或當(dāng)構(gòu)建完成時通過通知。4、生成JUnit/TestNG測試報告。5、分布式構(gòu)建支持Jenkins能夠讓多臺計算機一起構(gòu)建/測試。6、文件識別:Jenkins能夠跟蹤哪次構(gòu)建生成哪些jar,哪次構(gòu)建使用哪個版本的jar等。7、插件支持:支持?jǐn)U展插件,你可以開發(fā)適合自己團隊使用的工具。CI系統(tǒng)基本結(jié)構(gòu)圖該系統(tǒng)的各個組成部分是按如下順序來發(fā)揮作用的:1.開發(fā)者檢入代碼到源代碼倉庫。2.CI系統(tǒng)會為每一個項目創(chuàng)建了一個單獨的工作區(qū)。當(dāng)預(yù)設(shè)或請求一次新的構(gòu)建時,它將把源代碼倉庫的源碼存放到對應(yīng)的工作區(qū)。3.CI系統(tǒng)會在對應(yīng)的工作區(qū)執(zhí)行構(gòu)建過程。4.(配置如果存在)構(gòu)建完成后,CI系統(tǒng)會在一個新的構(gòu)件中執(zhí)行定義的一套測試。完成后觸發(fā)通知(Email,RSS等等)給相關(guān)的當(dāng)事人。5.(配置如果存在)如果構(gòu)建成功,這個構(gòu)件會被打包并轉(zhuǎn)移到一個部署目標(biāo)(如應(yīng)用服務(wù)器)或存儲為軟件倉庫中的一個新版本。軟件倉庫可以是CI系統(tǒng)的一部分,也可以是一個外部的倉庫,諸如一個文件服務(wù)器或者像J、SourceForge之類的。6.CI系統(tǒng)通常會根據(jù)請求發(fā)起相應(yīng)的操作,諸如即時構(gòu)建、生成報告,或者檢索一些構(gòu)建好的構(gòu)件。二、Jenkins的安裝與部署1、下載yum源:2、導(dǎo)入密鑰:安裝Jenkins:yuminstalljenkins啟動前檢查是否安裝jdk:java-version(最好是1.8以上的)修改配置文件:sudovim/etc/init.d/jenkins在candidates="路徑后添加java路徑(根據(jù)個人Java安裝地址)vi/etc/sysconfig/jenkins找到JENKINS_PORT=“8080”(8080是Jenkins默認(rèn)端口,若被占用課修改為其他空閑端口)關(guān)閉防火墻啟動應(yīng)用:sudoservicejenkinsstart三、Jenkins構(gòu)建maven項目1、插件安裝啟動Jenkins服務(wù)以后便可登錄瀏覽器訪問,因為我們需要從git上拉取源碼,所以要在Jenkins上安裝相應(yīng)的git插件,同時我們也需要安裝maven類的插件來支持構(gòu)建maven項目。--》點擊系統(tǒng)管理--》點擊管理插件(下圖換為Jenkins5和Jenkins6)在可選插件中找到Gitplugin和MavenIntegrationplugin插件并安裝插件安裝完畢后重啟Jenkins2、新建maven項目新建一個job(下圖換為Jenkins7)輸入名稱和項目類型源碼管理在源碼管理項中選擇git并輸入git地址并在Credentials中Add倉庫登錄賬號密碼,在下方分支選擇中選擇需要構(gòu)建的項目分支構(gòu)建觸發(fā)器根據(jù)實際要求構(gòu)建符合要求的觸發(fā)器,此圖中觸發(fā)器PollSCM的功能是每個一定時間便檢查源碼是否有更新,若有則自動構(gòu)建。(*/60****含義是每隔60分鐘檢查一次git源碼)構(gòu)建選項第一行選項是默認(rèn)的pom文件在git的root目錄下,如果pom文件在其他路徑下,則需要輸入相應(yīng)的路徑/pom.*ml;第二行執(zhí)行的maven命令此時maven項目構(gòu)建基本就完成,進入將maven項目生成docker鏡像的步驟。四、Docker鏡像構(gòu)建1、docker配置在Jenkins中安裝相應(yīng)的docker插件(docker-build-step)在Host服務(wù)器上安裝docker(版本慎用)配置docker的遠(yuǎn)程訪問:1、centos下修改docker的配置文件/usr/lib/systemd/system/docker.service2、在[Service]的部分添加(此處是暴露的6732端口)E*ecStart=E*ecStart=/usr/bin/dockerd-Htcp://:6732-Huni*://var/run/docker.sock3、docker重新讀取配置文件并重啟docker服務(wù)*systemctldaemon-reload*systemctlrestartdocker進入Jenkins,選擇系統(tǒng)管理--》系統(tǒng)設(shè)置--》DockerBuilder在DockerURL處填寫暴露的端口tcp://50:6732然后保存這樣Jenkins便可調(diào)用host服務(wù)器中的docker功能創(chuàng)建Docker鏡像執(zhí)行腳本構(gòu)建容器和鏡像:在上一步構(gòu)建war包之后繼續(xù)選擇POSTSteps,執(zhí)行我們放在Jenkins宿主機上/home/skyform/目錄下的構(gòu)建腳本保存后進入操作頁面并點擊立即構(gòu)建此時左下角會出現(xiàn)構(gòu)建進度條,藍色表示構(gòu)建成功,紅色表示構(gòu)建失敗,灰色表示構(gòu)建未完成構(gòu)建結(jié)束后點擊構(gòu)建編號,進入結(jié)果查看界面,點擊ConsoleOutput查看構(gòu)建過程這樣就完成了利用Jenkins來夠構(gòu)建一個maven項目并將其制作成Docker鏡像的工作。這個構(gòu)建過程會根據(jù)你的觸發(fā)器設(shè)置來不斷實施,從而達到監(jiān)控軟件開發(fā)流程,快速顯示問題與部署的目的。保證開發(fā)人員以及相關(guān)人員省時省力提高開發(fā)效率。五、案例目前SkyForm產(chǎn)品在進行微服務(wù)化改造,我們采用jenkins+docker支撐了SkyForm產(chǎn)品各個微服務(wù)的開發(fā)、部署、測試的整個過程SkyForm產(chǎn)品中間件docker化:SkyForm產(chǎn)品微服務(wù)docker化(19個):SkyForm5.0微服務(wù)通過Jenkins實現(xiàn)持續(xù)集成及構(gòu)建架構(gòu):研發(fā)人員將自己的代碼提交至git倉庫,Jenkins響應(yīng)設(shè)定的觸發(fā)器,將提交后的代碼拉取、編譯、打包至Jenkins宿主機上,然后執(zhí)行腳本,通過Docker命令在開發(fā)環(huán)境(或測試環(huán)境)生成響應(yīng)鏡像并啟動容器,研發(fā)人員此時即可在開發(fā)環(huán)境(或測試環(huán)境)下進行聯(lián)調(diào)。疑問及解答Q:項目不同的git分支是怎么打包鏡像了?比如測試分支和開發(fā),生產(chǎn)分支。A:在源碼管理那塊可以設(shè)置不同的分支,需要創(chuàng)建管理不同分支的Jenkins項目。Q:通過pose啟動的服務(wù)在3以后依賴不起作用了,那如何做前置依賴健康的檢測呢,再就是啟動的服務(wù)如果服務(wù)失敗后會自動重啟,這樣會造成很多失敗的實例,如何清楚這些大量的失敗實例,還有通過swarm做的集群在做服務(wù)發(fā)布的時候會沒有tag這是是哪里的問題(私有倉庫)?A:健康檢測目前是通過人工手動檢查dubbo服務(wù)注冊的情況,以后可以將這一功能寫到腳本里,例如探測前一服務(wù)一個功能是否能正常提供作為服務(wù)健康狀況的評定標(biāo)準(zhǔn),服務(wù)失敗自動重啟的只是那個失敗的容器不會導(dǎo)致有大量的失敗容器。Q:.持續(xù)集成和持續(xù)發(fā)布這塊如何銜接?A:持續(xù)集成與持續(xù)發(fā)布這一塊主要是通過自動化部署腳本去完成,通過將測試通過的鏡像保存下來與自動化部署腳本一起打包做成安裝包,*一服務(wù)的升級也只需將容器鏡像替換重新啟動一個實例即可。Q:gitlab+jenkins和gitlab+gitlabrunner怎么選擇?A:我們主要是基于將代碼管理與持續(xù)集成分割開的理念,加上之前也有jenkins項目經(jīng)驗來選擇的,基于求穩(wěn)的心態(tài)沒有嘗試gitlabrunner而且gitlabrunner是每次只要有人push代碼就會觸發(fā)腳本而這不是我們所期望的,我們是期望定期檢查是否執(zhí)行迭代或者定期的執(zhí)行迭代,runner的權(quán)限管理也不如jenkins的更符合我們的訴求。Q:生產(chǎn)和測試網(wǎng)絡(luò)是隔離的嗎?Jenkins是部署在哪個網(wǎng)絡(luò)區(qū)域主機上?Jenkins自身是run在容器里嗎?有沒有遇到Jenk
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025戶外品牌探路者線上新媒體運營方案
- 田徑運動會活動方案(匯編15篇)
- 五年級二十年后的家鄉(xiāng)單元作文
- 安全工作演講稿匯編15篇
- 2023年幼兒園安全工作計劃10篇
- 財務(wù)會計個人辭職報告集合8篇
- 一次有趣的游戲初一日記400字5篇
- 北京市通州區(qū)2024-2025學(xué)年八年級上學(xué)期期末考試道德與法治試卷(含答案)
- 2025年工程瑞雷波儀項目合作計劃書
- 國培計劃心得體會
- 協(xié)商函范文(推薦十八篇)
- 面神經(jīng)微血管減壓術(shù)精要
- S7-1200PLC實訓(xùn)課程教案
- 畢業(yè)設(shè)計(論文)-仿生分布式驅(qū)動撲翼設(shè)計-機械鳥
- 畢業(yè)論文-YT4543型組合機床動力滑臺液壓傳動系統(tǒng)設(shè)計
- 律師事務(wù)所編制的實習(xí)人員實務(wù)訓(xùn)練計劃
- 文言虛詞(考點精講)-【中職專用】中職高考語文一輪復(fù)習(xí)講練測(浙江適用)
- 英國簽證戶口本翻譯模板(匯編)
- 中小企業(yè)內(nèi)部控制與風(fēng)險管理(第二版)項目一:內(nèi)部控制與風(fēng)險管理基礎(chǔ)
- 駕駛艙資源管理緒論課件
- 聲藝 EPM8操作手冊
評論
0/150
提交評論