亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索
博主信息
博文 8
粉絲 0
評(píng)論 1
訪問(wèn)量 6989
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
Jenkins與實(shí)現(xiàn)CI/CD
lucia打工人
原創(chuàng)
549人瀏覽過(guò)

Jenkins與實(shí)現(xiàn)CI/CD

Jenkins的主要開(kāi)發(fā)者是川口耕介, 是在MIT許可證下發(fā)布的自由軟件。

Jenkins是一個(gè)用Java編寫的開(kāi)源的持續(xù)集成工具。在與Oracle發(fā)生爭(zhēng)執(zhí)后,項(xiàng)目從Hudson項(xiàng)目獨(dú)立。

Jenkins提供了軟件開(kāi)發(fā)的持續(xù)集成服務(wù)。它運(yùn)行在Servlet容器中(例如Apache Tomcat)。

Jenkins支持軟件配置管理(SCM)工具(包括AccuRev SCM、CVS、Subversion、Git、Perforce、Clearcase和RTC),可以執(zhí)行基于Apache Ant和Apache Maven的項(xiàng)目,以及任意的Shell腳本和Windows批處理命令。


Jenkins功能

1、持續(xù)的軟件版本發(fā)布/測(cè)試項(xiàng)目。

2、監(jiān)控外部調(diào)用執(zhí)行的工作。


Jenkins概念

Jenkins是一個(gè)功能強(qiáng)大的應(yīng)用程序,允許持續(xù)集成和持續(xù)交付項(xiàng)目,無(wú)論用的是什么平臺(tái)。

這是一個(gè)免費(fèi)的開(kāi)源項(xiàng)目,可以處理任何類型的構(gòu)建或持續(xù)集成。集成Jenkins可以用于一些測(cè)試和部署技術(shù)。Jenkins是一種軟件允許持續(xù)集成。


Jenkins目的

① 持續(xù)、自動(dòng)地構(gòu)建/測(cè)試軟件項(xiàng)目。

② 監(jiān)控軟件開(kāi)發(fā)流程,快速問(wèn)題定位及處理,提高開(kāi)發(fā)效率。


Jenkins特性

① 開(kāi)源的java語(yǔ)言開(kāi)發(fā)持續(xù)集成工具,支持CI,CD。

② 易于安裝部署配置:可通過(guò)yum安裝,或下載war包以及通過(guò)docker容器等快速實(shí)現(xiàn)安裝部署,可方便web界面配置管理。

③ 消息通知及測(cè)試報(bào)告:集成RSS/E-mail通過(guò)RSS發(fā)布構(gòu)建結(jié)果或當(dāng)構(gòu)建完成時(shí)通過(guò)e-mail通知,生成JUnit/TestNG測(cè)試報(bào)告。

④ 分布式構(gòu)建:支持Jenkins能夠讓多臺(tái)計(jì)算機(jī)一起構(gòu)建/測(cè)試。

⑤ 文件識(shí)別:Jenkins能夠跟蹤哪次構(gòu)建生成哪些jar,哪次構(gòu)建使用哪個(gè)版本的jar等。

⑥ 豐富的插件支持:支持?jǐn)U展插件,你可以開(kāi)發(fā)適合自己團(tuán)隊(duì)使用的工具,如git,svn,maven,docker等。


產(chǎn)品發(fā)布流程

產(chǎn)品設(shè)計(jì)成型 -> 開(kāi)發(fā)人員開(kāi)發(fā)代碼 -> 測(cè)試人員測(cè)試功能 -> 運(yùn)維人員發(fā)布上線


持續(xù)集成 持續(xù)交付 持續(xù)布署 (CI/CD)

持續(xù)集成(Continuous Integration),一種軟件工程流程,將所有工程師對(duì)于軟件的工作復(fù)本,每天集成數(shù)次到共用主線(mainline)上。

這個(gè)名稱最早由葛來(lái)迪·布區(qū)(Grady Booch)在他的布區(qū)方法中提出,但是他并沒(méi)有提到要每天集成數(shù)次。 之后成為極限編程(extreme

programming,縮寫為XP)的一部分。在測(cè)試驅(qū)動(dòng)開(kāi)發(fā)(TDD)的作法中,通常還會(huì)搭配自動(dòng)單元測(cè)試。

持續(xù)集成的提出,主要是為了解決軟件進(jìn)行系統(tǒng)集成時(shí)面臨的各項(xiàng)問(wèn)題,極限編程稱這些問(wèn)題為集成地獄(integration hell)。

持續(xù)集成主要是強(qiáng)調(diào)開(kāi)發(fā)人員提交了新代碼之后,立刻進(jìn)行構(gòu)建、(單元)測(cè)試。根據(jù)測(cè)試結(jié)果,確定新代碼和原有代碼能否正確地集成在一起。

簡(jiǎn)單來(lái)講就是:頻繁地(一天多次)將代碼集成到主干。


持續(xù)集成目的在產(chǎn)生以下效益如:

? 及早發(fā)現(xiàn)集成錯(cuò)誤且由于修訂的內(nèi)容較小所以易于追蹤,這可以節(jié)省項(xiàng)目的時(shí)間與成本。

? 避免發(fā)布日期的前一分鐘發(fā)生混亂,當(dāng)每個(gè)人都會(huì)嘗試為他們所造成的那一點(diǎn)點(diǎn)不兼容的版本做檢查。

? 當(dāng)單元測(cè)試失或發(fā)生錯(cuò)誤,若開(kāi)發(fā)人員需要在不除錯(cuò)的情況下還原代碼庫(kù)到一個(gè)沒(méi)有問(wèn)題的狀態(tài),只需要放棄一小部分的更改 (因?yàn)榧傻拇螖?shù)頻繁)。

? 讓 “最新” 的程序可保持可用的狀態(tài)供測(cè)試、展示或發(fā)布用。

? 頻繁的提交代碼會(huì)促使開(kāi)發(fā)人員創(chuàng)建模塊化,低復(fù)雜性的代碼。

? 防止分支大幅偏離主干。如果不是經(jīng)常集成,主干又在不斷更新,會(huì)導(dǎo)致以后集成的難度變大,甚至難以集成。


持續(xù)交付(Continuous Delivery),

是一種軟件工程手法,讓軟件產(chǎn)品的產(chǎn)出過(guò)程在一個(gè)短周期內(nèi)完成,以保證軟件可以穩(wěn)定、持續(xù)的保持在隨時(shí)可以釋出的狀況。

它的目標(biāo)在于讓軟件的構(gòu)建、測(cè)試與釋出變得更快更頻繁。這種方式可以減少軟件開(kāi)發(fā)的成本與時(shí)間,減少風(fēng)險(xiǎn)。

持續(xù)交付在持續(xù)集成的基礎(chǔ)上,將集成后的代碼部署到更貼近真實(shí)運(yùn)行環(huán)境的「類生產(chǎn)環(huán)境」(production-like environments)中。

比如,我們完成單元測(cè)試后,可以把代碼部署到連接數(shù)據(jù)庫(kù)的Staging 環(huán)境中更多的測(cè)試。如果代碼沒(méi)有問(wèn)題,可以繼續(xù)手動(dòng)部署到生產(chǎn)環(huán)境中。


持續(xù)部署(Continuous Deployment),是持續(xù)交付的下一步,指的是代碼通過(guò)評(píng)審以后,自動(dòng)部署到生產(chǎn)環(huán)境。

持續(xù)部署即在持續(xù)交付的基礎(chǔ)上,把部署到生產(chǎn)環(huán)境的過(guò)程自動(dòng)化。


簡(jiǎn)單總結(jié)

持續(xù)集成(Continuous Integration, CI): 代碼合并,構(gòu)建,部署,測(cè)試都在一起,不斷地執(zhí)行這個(gè)過(guò)程,并對(duì)結(jié)果反饋。

持續(xù)交付(Continuous Deployment, CD): 將產(chǎn)品部署到測(cè)試環(huán)境、預(yù)生產(chǎn)環(huán)境, 手動(dòng)(選擇性的)布署到生產(chǎn)環(huán)境?!?/strong>

持續(xù)部署(Continuous Delivery, CD): 將最終產(chǎn)品自動(dòng)布署到生成環(huán)境, 給用戶使用。


持續(xù)交付與持續(xù)部署

持續(xù)交付意味著所有的變更都可以被部署到生產(chǎn)環(huán)境中,但是出于業(yè)務(wù)考慮,可以選擇不部署, 人為控制。

持續(xù)部署意味著所有的變更都會(huì)被自動(dòng)部署到生產(chǎn)環(huán)境中,自動(dòng)部署。 如果要實(shí)施持續(xù)部署,必須先實(shí)施持續(xù)交付.


持續(xù)交付與 DevOps

持續(xù)交付與DevOps的含義很相似, 所以經(jīng)常被混淆, 但是它們是不同的兩個(gè)概念。 DevOps的范圍更廣, 它以文化變遷為中心,

特別是軟件交付過(guò)程所涉及的多個(gè)團(tuán)隊(duì)之間的合作(開(kāi)發(fā),運(yùn)維,QA,管理部門等), 并且將軟件交付的過(guò)程自動(dòng)化。

持續(xù)交付是一種自動(dòng)化交付的手段,關(guān)注點(diǎn)在于將不同的過(guò)程集中起來(lái),并且更快、更頻繁地執(zhí)行這些過(guò)程。

因此,DevOps可以是持續(xù)交付的一個(gè)產(chǎn)物,持續(xù)交付直接匯入DevOps。

參考: What is DevOps? | Opensource.com



實(shí)現(xiàn)CI/CD可分為以下五步:

  1. CI/CD 框架

  2. 源代碼控制管理

  3. 自動(dòng)化構(gòu)建工具

  4. 應(yīng)用服務(wù)器

  5. 代碼覆蓋測(cè)試


CI/CD 框架

CI/CD 工具有很多,其中Jenkins是應(yīng)用最為廣泛的一種。 Jenkins,

是一個(gè)基于 Java 的 MIT 許可下的開(kāi)源 CI/CD

工具,它是推廣 DevOps 運(yùn)動(dòng)的工具,并已成為了事實(shí)標(biāo)準(zhǔn)。


源代碼控制管理

CI/CD 工具與源代碼控制管理(SCM)工具集成是最佳實(shí)踐之一。 在眾多的 SCM 工具中, Git 是最標(biāo)準(zhǔn)恰當(dāng)?shù)?。在此極力推薦使用Git。


自動(dòng)化構(gòu)建工具

有了 SCM之后,我們可以很好的管理我們的源代碼了,但要想讓它成為一個(gè)網(wǎng)頁(yè)應(yīng)用,還要將其編譯并打包成可部署的包或可執(zhí)行程序(解釋類語(yǔ)言不用)。

自動(dòng)化構(gòu)建工具的目標(biāo):將源代碼構(gòu)建成某種想要的格式,并且將清理、編譯、測(cè)試、部署到某個(gè)位置這些任務(wù)自動(dòng)化。

構(gòu)建工具會(huì)根據(jù)編程語(yǔ)言的不同而不同,下面是一些常用語(yǔ)言對(duì)應(yīng)的開(kāi)源構(gòu)建工具: Java: Maven, Ant, Gradle, Bazel

JavaScript: Grunt, Gulp Ruby: Buildr, Rake Python: A-A-P, SCons,

BitBake C#: Cake …


應(yīng)用服務(wù)器

構(gòu)建出應(yīng)用之后,還需要應(yīng)用服務(wù)器來(lái)發(fā)布我們的應(yīng)用,以下為常見(jiàn)的網(wǎng)頁(yè)應(yīng)用服務(wù)器: Java:Tomcat, Jetty, WildFly

… Python: Django, Tornado … JavaScript: Node.js


代碼覆蓋測(cè)試

實(shí)現(xiàn)代碼測(cè)試件可能是另一個(gè)麻煩的需求,但是開(kāi)發(fā)者需要盡早地捕捉程序中的所有錯(cuò)誤并提升代碼質(zhì)量來(lái)保證最終用戶滿意度。

幸運(yùn)的是,這里有許多開(kāi)源工具來(lái)測(cè)試你的代碼并提出改善質(zhì)量的建議。甚至更好的,大部分 CI/CD 工具能夠集成這些工具并將測(cè)試過(guò)程自動(dòng)化進(jìn)行。

代碼測(cè)試分為兩個(gè)部分:“代碼測(cè)試框架”幫助進(jìn)行編寫與運(yùn)行測(cè)試,“代碼質(zhì)量改進(jìn)工具”幫助提升代碼的質(zhì)量。


代碼測(cè)試框架:

Java: JUnit, EasyMock, Mockito, PowerMock Python: Pytest, Hypothesis, Tox


代碼質(zhì)量改進(jìn)工具:

Java: Cobertura, CodeCover, Emma, JaCoCo Python: Coverage.py,

Hypothesis, Tox JavaScript: Jasmine, Karma, Mocha, Jest



————————————————

版權(quán)聲明:本文為CSDN博主「wenqing_ruyu」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。

原文鏈接:https://blog.csdn.net/wenqing_ruyu/article/details/126067740


本博文版權(quán)歸博主所有,轉(zhuǎn)載請(qǐng)注明地址!如有侵權(quán)、違法,請(qǐng)聯(lián)系admin@php.cn舉報(bào)處理!
全部評(píng)論 文明上網(wǎng)理性發(fā)言,請(qǐng)遵守新聞評(píng)論服務(wù)協(xié)議
0條評(píng)論
作者最新博文
關(guān)于我們 免責(zé)申明 意見(jiàn)反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長(zhǎng)!
關(guān)注服務(wù)號(hào) 技術(shù)交流群
PHP中文網(wǎng)訂閱號(hào)
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時(shí)隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號(hào)
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)

  • 登錄PHP中文網(wǎng),和優(yōu)秀的人一起學(xué)習(xí)!
    全站2000+教程免費(fèi)學(xué)