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