現(xiàn)在位置:主頁 > 科技 > 原來Zuul可以這樣簡化測試流程

原來Zuul可以這樣簡化測試流程

作者:編輯 ? 時(shí)間:2020-06-10 ? 瀏覽:人次

原標(biāo)題:原來Zuul可以這樣簡化測試流程

OpenTelekomCloud是一個(gè)大型的歐洲OpenStack公有云。其子公司T-SystemsInternationalGmbH為德國電信集團(tuán)提供服務(wù)。

OpenTelekomCloud架構(gòu)師ArtemGoncharov分享了OpenTelekomCloud為什么選擇Zuul,以及他們?nèi)绾螌⑵渑cGitHub和OpenStack一起使用。

Q:你的組織是怎么開始使用Zuuk的?

A:我們最開始使用Zuul開發(fā)OpenStack客戶端組件,如SDK、CLIs和其他內(nèi)部運(yùn)維軟件組件。在設(shè)法將一些更改合并到Zuul中之后,我們將其高效地部署為我們的持續(xù)集成系統(tǒng)?,F(xiàn)在,它是我們的CI系統(tǒng),用于開發(fā)提供給客戶的所有開源工具。此外,Zuul目前用于監(jiān)控平臺服務(wù)質(zhì)量。為此,我們定期執(zhí)行一組測試。它還永久監(jiān)控我們的RefStack合規(guī)性。

我們?yōu)榘裐uul作為德國電信其他部門的內(nèi)部服務(wù)做準(zhǔn)備。我們在自己的公有云上運(yùn)行Zuul,即OpenTelekomCloud,并在那里生成虛擬機(jī)。我們?nèi)际荗penStack!

Q:你們是如何使用Zuul的?

A:目前,我們有在與GitHub交互的公共域上工作的Zuul。盡管Gerrit的CI工作流非常強(qiáng)大,但我們注意到一些用戶困擾于其復(fù)雜性。因此,我們決定留在GitHub,讓更多的社區(qū)成員參與我們項(xiàng)目的開發(fā)。Nodepool為簡化OpenStack驅(qū)動程序的作業(yè)啟動虛擬機(jī)。

Q:你們現(xiàn)在的規(guī)模多大?

A:我們有一個(gè)五節(jié)點(diǎn)的zookeeper集群,每個(gè)節(jié)點(diǎn)有一個(gè)調(diào)度器、一個(gè)nodepool-builder和一個(gè)nodepool-launcher。目前兩個(gè)Zuul執(zhí)行器滿足了我們的需要。我們有大約10個(gè)項(xiàng)目由Zuul管理,但計(jì)劃很快增加到50個(gè)。我們平均每天生成50個(gè)build。

Q:你們從使用Zuul得到了什么好處?

A:我們在快速成長,項(xiàng)目在規(guī)模和復(fù)雜性上都有了清晰的布局,而且預(yù)計(jì)性會增加得很快。門控到位,確保所有的軟件始終都是經(jīng)過測試和一致的——這讓我們很放心,使我們能夠擴(kuò)大所覆蓋的項(xiàng)目的數(shù)量。

其次,我們可以更好地控制構(gòu)建和測試過程在何處以及如何進(jìn)行。我們正在測試真實(shí)的云場景,因此有實(shí)際云資源的憑據(jù)和訪問權(quán)限。通過Zuul和Nodepool,我們可以更好地控制這些虛擬機(jī)和存儲的數(shù)據(jù)。

最后,我們有一個(gè)相當(dāng)復(fù)雜的集成和部署工作流。我們構(gòu)建和打包的不僅僅是軟件,我們還創(chuàng)建其他工件,比如文檔、PyPI包,還有更多需要額外步驟的東西。我們喜歡使用Ansibleplaybook定義這些工作流所帶來的靈活性。

Q:挑戰(zhàn)是什么(你們是如何解決的)?

A:測試公有云的所有方面對我們來說都很重要。功能測試包括登錄域、創(chuàng)建資源和處理憑證的所有方面。由于這個(gè)安裝程序連接到GitHub,可以間接地供公眾訪問,因此我們對在執(zhí)行實(shí)際測試和構(gòu)建的同一平臺上運(yùn)行Zuul安裝程序有點(diǎn)不安。因此,我們通過幾個(gè)專用的OpenStack域來隔離這些作用域,其中只有Zuul有API訪問權(quán)限。在最壞的情況下,如果憑據(jù)泄漏,我們只需清理并重置一個(gè)測試域,但Zuul基礎(chǔ)設(shè)施本身不受影響。為此,我們促進(jìn)了OpenStackSDK的“項(xiàng)目清理”功能,我們也為此做出了貢獻(xiàn)。

我們還經(jīng)歷了refstack的功能測試或驗(yàn)證,經(jīng)常會留下很多碎片——這些碎片沒有被代碼清理掉,有時(shí)甚至是因?yàn)镺penStack本身的API調(diào)用失敗。我們還利用“項(xiàng)目清理”來減輕這種行為。

Zuul還將日志文件中的許多信息發(fā)布到公共可讀的Swift容器中。我們的安全團(tuán)隊(duì)對此表示不滿,即使大部分信息是無害的。在某些情況下,我們修補(bǔ)了Zuul或其作業(yè),因此這些數(shù)據(jù)不會先累積。

出于運(yùn)維和安全原因,我們希望盡可能地包含所有工作負(fù)載。Zuul配備了一組Docker容器。不幸的是,Nodepool-builder需要很多特權(quán),這很難用普通的舊Docker實(shí)現(xiàn)。我們的方法是利用Podman作為替代方案。

Q:關(guān)于Zuul的未來計(jì)劃是什么?

A:Gerrit代碼審查系統(tǒng)實(shí)現(xiàn)了一個(gè)復(fù)雜的角色模型,它允許用戶進(jìn)行代碼審查、升級修訂或授權(quán)最終合并。僅用GitHub實(shí)現(xiàn)這些訪問控制功能是一個(gè)大挑戰(zhàn)。作為暫時(shí)的解決方法,我們對拉取請求使用“/merge”注釋。

盡管Zuul的主要目的是實(shí)現(xiàn)自動化,但有時(shí)能夠手動干預(yù)也不錯(cuò)。不幸的是,目前還沒有一個(gè)真正的UI來執(zhí)行管理任務(wù),比如重新構(gòu)建一些工件。這將有助于遷移更多的Jenkins作業(yè)。

Zuul的運(yùn)維很復(fù)雜,我們目前沒有一個(gè)專門的小組。我們通過實(shí)現(xiàn)Ansibleplaybooks來減少運(yùn)維的工作量,但這是一項(xiàng)持續(xù)的工作。

我們致力于將Zuul轉(zhuǎn)變?yōu)槠渌聡娦抛庸竞晚?xiàng)目的內(nèi)部產(chǎn)品。我們也非常有興趣讓Kubernetes和OpenShift成為Zuul的運(yùn)維平臺。這樣的挑戰(zhàn)來自于高可用性所需的多云問題。

Q:Zuul有沒有特別的功能吸引到你們?

A:Zuul推動了OpenStack的發(fā)展,這是一項(xiàng)了不起的工作,也是一個(gè)相當(dāng)大的責(zé)任。它的可伸縮性和靈活性給我們留下了深刻的印象,其架構(gòu)適應(yīng)了我們的內(nèi)部項(xiàng)目。相信還有更多的事情要做。

https://superuser.openstack.org/articles/zuul-a-t-systems-case-study/

轉(zhuǎn)載請保留原文鏈接:http://www.eatcooks.com/a/keji/2020/0610/48265.html上一篇:上一篇:屏下攝像頭即將量產(chǎn)?OPPO高管:不要抱太高的期望
下一篇:下一篇:沒有了