如今,現(xiàn)代嵌入式軟件團(tuán)隊正在實施一個DevOps流程,該流程可以提高安全性、自動化軟件開發(fā)生命周期、加強(qiáng)協(xié)作并提供持續(xù)改進(jìn)。DevOps是加速軟件交付的文化哲學(xué)、最佳實踐和工具的結(jié)合。如果提到DevOps,很多嵌入式開發(fā)者馬上會想到持續(xù)集成/持續(xù)部署(CI/CD)。在本帖中,我們將探討如何定義理想的嵌入式CI/CD管道。
CI/CD管道由什么組成?
CI/CD管道是一系列必須成功完成才能交付新軟件版本的步驟或作業(yè)。在某種程度上,嵌入式開發(fā)人員一直都有CI/CD管道,但這是一個手動且耗時的過程。CI/CD管道的現(xiàn)代概念是,它是自動化的,便于向客戶交付快速的、微小的軟件改進(jìn)。
典型的CI/CD管道包含三個簡單的活動:構(gòu)建、測試和部署軟件。從概念上講,管道非常簡單,但是細(xì)節(jié)經(jīng)常讓開發(fā)人員感到困惑。
仔細(xì)考慮每一個方面,確定你想要使用的實現(xiàn),并對其進(jìn)行配置并不容易。實現(xiàn)你自己的CI/CD解決方案需要深謀遠(yuǎn)慮和時間投入,但是該解決方案應(yīng)該是什么樣的呢?每個團(tuán)隊都有自己的需求,但是所有CI/CD管道都有一些標(biāo)準(zhǔn)特性。讓我們看看幾個領(lǐng)域,并為嵌入式開發(fā)人員定義一個通用的CI/CD管道。我們將保持它的簡單,以便你將來可以在它的基礎(chǔ)上進(jìn)行構(gòu)建。
定義理想的CI/CD渠道
一個理想CI/CD管道應(yīng)該包含以下工作:
l構(gòu)建–構(gòu)建作業(yè)將獲取你的固件并生成發(fā)布二進(jìn)制文件。
l分析——分析構(gòu)建工作將靜態(tài)地分析你的代碼。典型的分析將包括圈復(fù)雜度、編碼度量和編碼標(biāo)準(zhǔn)遵循,例如樣式指南、MISRA和/或CERT。
l測試–測試工作將執(zhí)行運輸產(chǎn)品所需的所有測試。你可能包括單元、功能、集成、系統(tǒng)和性能測試。
l報告——報告作業(yè)將從以前的作業(yè)中收集結(jié)果,以提供關(guān)于構(gòu)建成功、分析結(jié)果、測試覆蓋率和結(jié)果等信息。
lmerge–當(dāng)所有作業(yè)都成功時,合并作業(yè)會將新功能合并到部署分支中。這里經(jīng)常有一個人的因素,但這也可以自動化。
l部署–當(dāng)合并作業(yè)成功完成時,部署作業(yè)將運行并啟動現(xiàn)場部署流程。部署通常與車隊部署軟件交互,該軟件可以將固件推送到現(xiàn)場設(shè)備。
上面的理想管道是我認(rèn)為嵌入式軟件團(tuán)隊想要達(dá)到的最低目標(biāo)。毫無疑問,可以添加額外的活動,例如硬件在環(huán)測試、模擬測試等等。然而,并不是所有的團(tuán)隊都能在這些活動中找到價值。僅僅是啟動和運行這些活動就會讓嵌入式團(tuán)隊忙碌一段時間。一旦你實現(xiàn)了你的理想愿景,你可以保持這個愿景,也可以擴(kuò)展它,添加你認(rèn)為對你和你的團(tuán)隊有價值的附加功能。
結(jié)論
DevOps很快找到了進(jìn)入許多團(tuán)隊嵌入式開發(fā)過程的方法。CI/CD是DevOps采用的重要驅(qū)動因素,因為團(tuán)隊希望以更快的速度交付軟件。CI/CD提供的自動化也是一個很好的工具,可以減輕手工工作,將開發(fā)人員解放出來,專注于更多的增值特性和產(chǎn)品創(chuàng)新。當(dāng)你開始你的CI/CD之旅時,你可以利用這篇文章中討論的基本的理想CI/CD管道。不要害怕將基線塑造成你自己理想的CI/CD。