持續(xù)集成/持續(xù)部署(CI/CD) 是一個為最終用戶自動構(gòu)建、測試、分析和部署軟件的過程。CI/CD
可以為嵌入式開發(fā)團隊提供多種價值,例如:
提高軟件質(zhì)量
減少調(diào)試時間
降低項目成本
提高按時完成任務(wù)的能力
簡化軟件部署過程
在這篇文章中,我們將探討嵌入式系統(tǒng)的 CI/CD。
CI/CD 簡介
團隊可以使用許多不同的工具和配置來設(shè)置 CI/CD
流程以用于嵌入式軟件開發(fā)。一般的作品雖然保持相對相似。
首先,團隊有一個包含產(chǎn)品源代碼的 git
存儲庫。開發(fā)人員將存儲庫源代碼分支以在其開發(fā)機器上本地開發(fā)功能或修復(fù)錯誤。在本地環(huán)境中,開發(fā)人員可以使用像 Docker
這樣的工具來構(gòu)建容器化的構(gòu)建環(huán)境以及測試和調(diào)試工具。功能準備就緒后,開發(fā)人員會將他們的更改提交到存儲庫中的分支。
接下來,提交代碼將使用嵌入式開發(fā)團隊選擇的 CI/CD 工具鏈啟動一個預(yù)定義的流程。例如,用于 CI/CD
流程的常用工具包括 Jenkins 和 GitLab。CI/CD
流程將配置為運行一系列自動化步驟(稱為管道),以確保軟件滿足預(yù)先配置的參數(shù)。
此時,管道中的第一步通常是構(gòu)建應(yīng)用程序映像。構(gòu)建應(yīng)用程序映像需要擁有成功構(gòu)建所需的所有工具。這就是 Docker
的用武之地! CI/CD 工具可以使用已經(jīng)設(shè)置了構(gòu)建工具鏈的 Docker 鏡像來驗證代碼是否可以成功構(gòu)建。為此,CI/CD
工具通常需要設(shè)置一個運行程序,該運行程序可以調(diào)度命令來構(gòu)建和運行 Docker
映像。對于小型團隊,運行器可能存在于單個開發(fā)人員的筆記本電腦上,但強烈建議將運行器安裝在本地或云中的服務(wù)器上。當有人需要提交代碼時,這消除了開發(fā)人員筆記本電腦的依賴。
當 runner 完成流水線階段時,它會將結(jié)果報告給 CI/CD 工具。如果管道中有多個階段,CI/CD
工具可能會分派更多命令。完成后,CI/CD
工具將報告運行管道的結(jié)果。如果一切順利,則狀態(tài)將設(shè)置為通過。如果某事沒有成功完成,它將被設(shè)置為失敗。如果管道失敗,開發(fā)人員可以進入并查看管道中的哪個作業(yè)沒有成功完成。然后他們負責修復(fù)它。
CI / CD 管道
CI/CD
管道只是執(zhí)行的作業(yè)的集合;但是,這些作業(yè)指定了在發(fā)布軟件之前需要驗證的軟件應(yīng)用程序構(gòu)建過程的重要方面。例如,開始時,嵌入式開發(fā)團隊可能會創(chuàng)建一個簡單的管道來構(gòu)建映像、lint
的源代碼、執(zhí)行單元測試,然后部署應(yīng)用程序。管道將類似于圖
2。在第一次部署期間,我甚至建議不要將自己與部署工作相關(guān)聯(lián)。只需進行構(gòu)建和測試設(shè)置就可以為團隊提供很多價值。(并非所有團隊都需要自動部署)。
一旦基礎(chǔ)工作正常,團隊就可以在他們的管道上構(gòu)建以添加額外的工作來增加新的功能。例如,更高級的管道可能開始如圖 3
所示。
CI/CD
為嵌入式軟件團隊提供了很多價值。起初,這個過程可能看起來很復(fù)雜,特別是因為嵌入式系統(tǒng)通常需要定制硬件。但是,一旦設(shè)置了流程,它可以幫助及早發(fā)現(xiàn)問題,從長遠來看可以節(jié)省時間和金錢。這個過程可以幫助嵌入式開發(fā)人員對他們編寫的代碼負責,尤其是他們編寫的質(zhì)量水平。如果你剛剛進入
CI/CD,請從簡單開始,然后啟動并運行構(gòu)建階段。之后,逐步增加功能,直到你擁有完整且自動化的 CI/CD 流程。