
編譯自: http://img8888.yunnanlong.com/2023/1156/nbizrjx14l0
作者: Brent Laster
譯者: pityonline
在軟件開發(fā)中經(jīng)常會提到 持續(xù)集成(Continuous Integration)(CI)和 持續(xù)交付(Continuous Delivery)(CD)這幾個(gè)術(shù)語 。但它們真正的意思是什么呢?
在談?wù)撥浖_發(fā)時(shí),經(jīng)常會提到 持續(xù)集成(Continuous Integration)(CI)和 持續(xù)交付(Continuous Delivery)(CD)這幾個(gè)術(shù)語 。但它們真正的意思是什么呢?在本文中,我將解釋這些和相關(guān)術(shù)語背后的含義和意義,例如 持續(xù)測試(Continuous Testing)和 持續(xù)部署(Continuous Deployment) 。
概覽工廠里的裝配線以快速、自動化、可重復(fù)的方式從原材料生產(chǎn)出消費(fèi)品 。同樣,軟件交付管道以快速、自動化和可重復(fù)的方式從源代碼生成發(fā)布版本 。如何完成這項(xiàng)工作的總體設(shè)計(jì)稱為“持續(xù)交付”(CD) 。啟動裝配線的過程稱為“持續(xù)集成”(CI) 。確保質(zhì)量的過程稱為“持續(xù)測試”,將最終產(chǎn)品提供給用戶的過程稱為“持續(xù)部署” 。一些專家讓這一切簡單、順暢、高效地運(yùn)行,這些人被稱為 運(yùn)維開發(fā)(DevOps)踐行者 。
“持續(xù)”是什么意思?“持續(xù)”用于描述遵循我在此提到的許多不同流程實(shí)踐 。這并不意味著“一直在運(yùn)行”,而是“隨時(shí)可運(yùn)行” 。在軟件開發(fā)領(lǐng)域,它還包括幾個(gè)核心概念/最佳實(shí)踐 。這些是:
頻繁發(fā)布:持續(xù)實(shí)踐背后的目標(biāo)是能夠頻繁地交付高質(zhì)量的軟件 。此處的交付頻率是可變的,可由開發(fā)團(tuán)隊(duì)或公司定義 。對于某些產(chǎn)品,一季度、一個(gè)月、一周或一天交付一次可能已經(jīng)足夠頻繁了 。對于另一些來說,一天可能需要多次交付也是可行的 。所謂持續(xù)也有“偶爾、按需”的方面 。最終目標(biāo)是相同的:在可重復(fù)、可靠的過程中為最終用戶提供高質(zhì)量的軟件更新 。通常,這可以通過很少甚至無需用戶的交互或掌握的知識來完成(想想設(shè)備更新) 。自動化流程:實(shí)現(xiàn)此頻率的關(guān)鍵是用自動化流程來處理軟件生產(chǎn)中的方方面面 。這包括構(gòu)建、測試、分析、版本控制,以及在某些情況下的部署 ??芍貜?fù):如果我們使用的自動化流程在給定相同輸入的情況下始終具有相同的行為,則這個(gè)過程應(yīng)該是可重復(fù)的 。也就是說,如果我們把某個(gè)歷史版本的代碼作為輸入,我們應(yīng)該得到對應(yīng)相同的可交付產(chǎn)出 。這也假設(shè)我們有相同版本的外部依賴項(xiàng)(即我們不創(chuàng)建該版本代碼使用的其它交付物) 。理想情況下,這也意味著可以對管道中的流程進(jìn)行版本控制和重建(請參閱稍后的 DevOps 討論) ??焖俚骸翱焖佟痹谶@里是個(gè)相對術(shù)語,但無論軟件更新/發(fā)布的頻率如何,預(yù)期的持續(xù)過程都會以高效的方式將源代碼轉(zhuǎn)換為交付物 。自動化負(fù)責(zé)大部分工作,但自動化處理的過程可能仍然很慢 。例如,對于每天需要多次發(fā)布候選版更新的產(chǎn)品來說,一輪 集成測試(integrated testing)下來耗時(shí)就要大半天可能就太慢了 。什么是“持續(xù)交付管道”?將源代碼轉(zhuǎn)換為可發(fā)布產(chǎn)品的多個(gè)不同的 任務(wù)(task)和 作業(yè)(job)通常串聯(lián)成一個(gè)軟件“管道”,一個(gè)自動流程成功完成后會啟動管道中的下一個(gè)流程 。這些管道有許多不同的叫法,例如持續(xù)交付管道、部署管道和軟件開發(fā)管道 。大體上講,程序管理者在管道執(zhí)行時(shí)管理管道各部分的定義、運(yùn)行、監(jiān)控和報(bào)告 。
持續(xù)交付管道是如何工作的?軟件交付管道的實(shí)際實(shí)現(xiàn)可以有很大不同 。有許多程序可用在管道中,用于源代碼跟蹤、構(gòu)建、測試、指標(biāo)采集,版本管理等各個(gè)方面 。但整體工作流程通常是相同的 。單個(gè)業(yè)務(wù)流程/工作流應(yīng)用程序管理整個(gè)管道,每個(gè)流程作為獨(dú)立的作業(yè)運(yùn)行或由該應(yīng)用程序進(jìn)行階段管理 。通常,在業(yè)務(wù)流程中,這些獨(dú)立作業(yè)是以應(yīng)用程序可理解并可作為工作流程管理的語法和結(jié)構(gòu)定義的 。
推薦閱讀
- 太多的理由太多的借口是什么歌名
- 卡西歐西鐵城什么檔次
- 唱歌為什么帶耳機(jī)
- 番薯是紅薯嗎
- 人事局是干什么的
- 粵康碼是誰發(fā)明的
- 紅棗泡水喝有什么好處?哪些人不適合喝?
- 你好李煥英是真實(shí)的嗎
- 陌陌獅大大誰捧的
- 駕照考試科目一是什么
