2021年10月13日 星期三

Jfrog Automotive DevOps Summit - CI/CD for C/C++


最近在研究汽車( Automotive)產業,看到一個有趣也熟悉的議題,也就是牽扯到軟硬整合的 Automotive 產業該怎麼導入 DevOps ?以往我們熟悉的 DevOps 不就是寫好 code 把 code 部署上去營運就好?(好啦這是過度簡化版)。不過把這個情境移到 Automotive 產業就變成得更加複雜了,也順帶產生一堆需要被解決的問題,也正因為這樣才會看到 Jfrog 的 Automotive DevOps Summit

雖然早在 2012 年研究 DevOps 工具時就知道 Jfrog ,但那時候只把它當作 Artifactory 看待,後沒就沒繼續追蹤下去,沒想到他已經轉型成 SaaS 公司並且在 NASDAQ 上市,後續還持續演進緊抓著 DevOps 的議題,有興趣的可以參考這篇文章介紹的很清楚:美股個股分析- 乘著DevOps浪潮的的SaaS公司- JFrog Ltd.(NASDAQ:FROG)。然後大概是 2019 年他們開始切入 Automotive 產業,在官網上可以看到這篇文章 Automotive DevOps: Rules of the Road Ahead,裡面描述為什麼這個議題突然變得如此重要?因為 Autonomous Cars are Code,現代的車子裡面充滿了各種微電腦和程式,更不用說未來的自駕車,下圖是一個系統裡面會有多少程式。



而這些程式都需要遵守這些 Rule,就很需要 DevOps 實踐:
  • Rule 0: Don’t kill anyone!
  • Rule 1: Should be up-to-date with the turn of a key.
  • Rule 2: The car should get better over time.
  • Rule 3: Reduce anxiety for drivers and developers.

Automotive 產業的 DevOps

那首先 Automotive 產業的DevOps會遇到哪些問題?這個 talk 第一個吸引我的注意力:How the Automotive Industry can enjoy modern DevOps for C & C++,因為一但牽扯到軟硬整合,基本上所使用的語言不是 C 就是 C++。



一但牽扯到 C/C++,接下來就會遇到 portable 的問題: 
  • 問你要運行在哪個平台? 
  • 怎麼 build? 
  • 怎麼 include 和管理 lib 和第三方 lib?
  • 要以怎樣的形式發佈和管理 binary 欓?

在這個 talk 裡面提到一個專門為了解決這個問題開發的 Open source 套件 Conan, the C and C++ package manager,在這個使用清單裡面也可以看到許多車廠都有參與其中。


大概看一下設定黨的內容跟 pip 的設定很像

[requires]
poco/1.9.4

[generators]
gcc
cmake
txt

[options]
poco:shared=True
openssl:shared=True

[imports]
bin, *.dll -> ./bin # Copies all dll files from the package "bin" folder to my project "bin" folder
lib, *.dylib* -> ./bin # Copies all dylib files from the package "lib" folder to my project "bin" folder

另外一個重點是他跟 build system 是可以獨立分開的





更多詳細內容可以看他們的文件:conan document 

不過我想接下來要研究的應該就是,如何管理各種平台和版本的 lib,甚至如何跟Git branch 搭配,想起來就蠻複雜的。


因為一但牽扯到平台,甚至不同 deploy 到不同的車子,就會需要不同的 binary,想像上可能連 unit test 都會需要有很多版本?



有興趣的可以繼續研究下去~:D


沒有留言 :