今天,許多嵌入式開(kāi)發(fā)人員和團(tuán)隊(duì)正在解決的一個(gè)問(wèn)題是如何管理他們的CI/CD管道。持續(xù)集成(CI)很有意義,因?yàn)樗鼘?zhuān)注于構(gòu)建、測(cè)試和驗(yàn)證嵌入式軟件。但是持續(xù)部署(CD)呢?
一開(kāi)始持續(xù)部署嵌入式軟件聽(tīng)起來(lái)很棒,但是你真的想持續(xù)向你的客戶(hù)部署新軟件嗎?如果你正在構(gòu)建汽車(chē)電子控制單元(ECU)、醫(yī)療設(shè)備,甚至微波爐或家用電器,你的客戶(hù)真的希望頻繁更新嗎?
這引發(fā)一個(gè)有趣的問(wèn)題:嵌入式產(chǎn)品的持續(xù)交付有意義嗎?
持續(xù)部署的目的
CD是一種軟件開(kāi)發(fā)實(shí)踐,其中代碼更改被自動(dòng)構(gòu)建、測(cè)試并部署到生產(chǎn)中,而無(wú)需人工干預(yù)。這種方法擴(kuò)展到了CI之外,在CI中,更改會(huì)被自動(dòng)測(cè)試,但不一定會(huì)被部署。CD為團(tuán)隊(duì)提供了諸多好處,例如:
l 加速上市時(shí)間
l 一致可靠的部署
l 更快的反饋循環(huán)
對(duì)于軟件行業(yè)的許多人來(lái)說(shuō),持續(xù)部署已經(jīng)改變了游戲規(guī)則,例如對(duì)于移動(dòng)和web應(yīng)用程序。當(dāng)然,在嵌入式產(chǎn)品中,持續(xù)交付很有意義,但是那些只想每季度或每年提供更新的系統(tǒng)怎么辦?
嵌入式中的持續(xù)交付應(yīng)該是什么樣的?
連續(xù)交付通常被視為向客戶(hù)交付新軟件。你可能會(huì)把顧客看作是在現(xiàn)場(chǎng)購(gòu)買(mǎi)和使用你的產(chǎn)品的人。然而,這可能是對(duì)客戶(hù)的狹隘看法。內(nèi)部人員或團(tuán)隊(duì)經(jīng)常使用你創(chuàng)建的軟件工件,并使用它們來(lái)驗(yàn)證產(chǎn)品是否工作,是否滿(mǎn)足整體的項(xiàng)目目標(biāo)和需求。如果你將這些隊(duì)友視為你軟件的客戶(hù),那么持續(xù)交付和你如何定義你的管道可能會(huì)改變。
例如,作為一個(gè)軟件團(tuán)隊(duì),你可能會(huì)定義一個(gè)類(lèi)似于下面圖1的連續(xù)交付管道:
在這個(gè)管道中,你可以看到我們定義了幾個(gè)作業(yè)。如果CI渠道成功,我們將有一個(gè)創(chuàng)建最終交付包的包作業(yè),然后有一個(gè)將所有材料集中在一起進(jìn)行發(fā)布的發(fā)布作業(yè)。從那里,我們有一個(gè)體現(xiàn)持續(xù)部署的生產(chǎn)開(kāi)發(fā)工作。生產(chǎn)開(kāi)發(fā)作業(yè)將被部署到一個(gè)內(nèi)部測(cè)試平臺(tái),開(kāi)發(fā)人員可以用它來(lái)驗(yàn)證構(gòu)建。
從那里,發(fā)布可以由質(zhì)量保證團(tuán)隊(duì)批準(zhǔn)。一旦通過(guò)審批流程,分階段發(fā)布可能會(huì)進(jìn)入現(xiàn)場(chǎng)生產(chǎn)。它們也可能是對(duì)每季度或每年在現(xiàn)場(chǎng)推出的更大版本的逐步驗(yàn)證。
結(jié)論
對(duì)于嵌入式軟件開(kāi)發(fā)人員和團(tuán)隊(duì)來(lái)說(shuō),持續(xù)交付是一個(gè)必不可少的工具。雖然向客戶(hù)部署新軟件的傳統(tǒng)方法可能沒(méi)有意義,但是部署到生產(chǎn)測(cè)試環(huán)境中就有意義了。生產(chǎn)測(cè)試環(huán)境允許開(kāi)發(fā)人員和質(zhì)量保證人員在向客戶(hù)推出新固件之前驗(yàn)證一切正常。雖然這可能不完全符合持續(xù)交付的精神,但它非常適合許多嵌入式產(chǎn)品團(tuán)隊(duì)。那么,持續(xù)交付對(duì)于嵌入式產(chǎn)品有意義嗎?
我想我們可以肯定地說(shuō),確實(shí)如此;這取決于我們的“持續(xù)”時(shí)間框架,以及這些版本是部署給內(nèi)部客戶(hù)還是外部客戶(hù)。持續(xù)部署有很多好處;即使你沒(méi)有自動(dòng)將新固件推送到現(xiàn)場(chǎng),它仍然可以在內(nèi)部進(jìn)行驗(yàn)證。