摘要:是一個(gè)為測(cè)試工程師開(kāi)發(fā)的部署框架,使用語(yǔ)言編寫(xiě),為了解決測(cè)試團(tuán)隊(duì)在測(cè)試過(guò)程中的部署問(wèn)題。部署執(zhí)行方式簡(jiǎn)單,支持命令行與自動(dòng)化測(cè)試可緊密合作作為一個(gè)為測(cè)試工程師開(kāi)發(fā)的部署框架,通過(guò)命令行進(jìn)行自動(dòng)化部署是第一選擇。
Planting 是一個(gè)為測(cè)試工程師開(kāi)發(fā)的部署框架,使用 python 語(yǔ)言編寫(xiě),為了解決測(cè)試團(tuán)隊(duì)在測(cè)試過(guò)程中的部署問(wèn)題。作為一個(gè)測(cè)試工程師你是不是也遇到過(guò)以下問(wèn)題:
手動(dòng)部署花費(fèi)時(shí)間長(zhǎng),配置容易出錯(cuò)、遺漏問(wèn)題
多集群多節(jié)點(diǎn)配置參數(shù)不一致,相互依賴問(wèn)題
持續(xù)集成 CI 中的部署自動(dòng)化問(wèn)題
多產(chǎn)品線部署需求問(wèn)題
多平臺(tái)的部署自動(dòng)化方案
復(fù)雜部署過(guò)程中的失敗重試問(wèn)題
降低一個(gè)新產(chǎn)品的部署工具開(kāi)發(fā)的代價(jià)
部署工具的開(kāi)發(fā)協(xié)作與分享問(wèn)題
這里對(duì)部署的理解與設(shè)計(jì),主要針對(duì)目前的公司產(chǎn)品形態(tài)以及部署需求。如果有更多需求,Planting 完全可以進(jìn)一步開(kāi)發(fā)進(jìn)行擴(kuò)展和定制。
部署必然包含兩部分,部署工具與被控設(shè)備(系統(tǒng))。這里的被控設(shè)備(系統(tǒng))常見(jiàn)的有各種操作系統(tǒng) Linux、 Windows、 MacOS, 移動(dòng)端有 iOS 和 Android 等,不常見(jiàn)的比如嵌入式系統(tǒng)等。被控設(shè)備(系統(tǒng))還包括部署過(guò)程中涉及到的一些系統(tǒng),比如各種軟件倉(cāng)庫(kù)(Nexus, Artifactory 等)。
部署工具如果需要多產(chǎn)品線開(kāi)發(fā)協(xié)作與分享,使用核心框架與插件配合的方式,是我們認(rèn)為最合適的方式。
核心框架包括了遠(yuǎn)程控制接口層以及在其上的底層核心功能庫(kù)(常見(jiàn)部署功能模塊,配置管理模塊,軟件倉(cāng)庫(kù)管理模塊等)。遠(yuǎn)程控制接口層可以包含或復(fù)用各種遠(yuǎn)程控制模塊比如 ansible 遠(yuǎn)程控制模塊,python 語(yǔ)言的 paramiko、fabric 庫(kù),移動(dòng)端 Android 可以是 adb, iOS 可以是 iOSShell。遠(yuǎn)程控制接口層可以根據(jù)需要進(jìn)行定制和擴(kuò)充。底層核心功能庫(kù)的常見(jiàn)功能模塊需要包含各種最基本的部署操作或者部署操作的組合,比如創(chuàng)建目錄,下載文件,解壓文件。具體實(shí)現(xiàn)可以復(fù)用像 Ansible 這類工具的功能模塊,減少重復(fù)造輪子。當(dāng)然也可以自己編寫(xiě)各種功能模塊。配置模塊包含命令行參數(shù)配置與框架配置,來(lái)保證整個(gè)部署可以靈活控制調(diào)整。
插件是一個(gè)軟件(系統(tǒng))部署功能的具體實(shí)現(xiàn)。從邏輯概念上抽象出了部署模式(Mode),部署步驟(Stage),部署操作(Action)等概念。這些概念是對(duì)一個(gè)部署功能的分層抽象。
一個(gè)軟件的部署模式有直接部署和升級(jí)部署以及擴(kuò)展部署等多種模式。每種部署模式又會(huì)包含多個(gè)步驟,所有步驟執(zhí)行成功代表部署成功。每個(gè)部署步驟又由一個(gè)或多個(gè)部署操作組合在一起。部署操作一般是粒度比較小的一個(gè)執(zhí)行操作,但一般并不是最小粒度的操作。正常來(lái)說(shuō)部署執(zhí)行的過(guò)程因?yàn)榫W(wǎng)絡(luò),軟件配置等問(wèn)題總會(huì)有執(zhí)行失敗的情況,需要提供一種重試機(jī)制,減少?gòu)?fù)雜部署不必要的重復(fù)執(zhí)行開(kāi)銷。選擇在部署 Stage 這一粒度上進(jìn)行重試,被認(rèn)為是一種合適的策略。
Action 操作可以由一個(gè)或多個(gè)不同的功能模塊組成。每個(gè)功能模塊(Module)一般被認(rèn)為是一個(gè)不能繼續(xù)拆分的執(zhí)行。所有基本的功能模塊應(yīng)該存在于部署框架當(dāng)中,而最常用到的 Action 也應(yīng)該由核心的框架層提供,以方便所有插件共同使用。同時(shí)插件也可以有自己實(shí)現(xiàn)的 Action , 這些 Action 可以方便地在引用它的插件中使用,達(dá)到共享的目的。
Planting 核心框架可以簡(jiǎn)單劃分為兩部分,插件管理模塊和插件執(zhí)行模塊。插件管理模塊負(fù)責(zé)管理各種插件,安裝、卸載、升級(jí)插件,維護(hù)整個(gè)插件池。插件執(zhí)行模塊對(duì)整個(gè)軟件部署執(zhí)行過(guò)程進(jìn)行管理。它根據(jù)插件配置和框架配置從插件池動(dòng)態(tài)加載插件進(jìn)行執(zhí)行。執(zhí)行的過(guò)程就是根據(jù)插件配置(模式,各種參數(shù))以及框架配置(被控節(jié)點(diǎn)信息,軟件倉(cāng)庫(kù)地址等)進(jìn)行部署的過(guò)程。執(zhí)行模塊還包含一個(gè)觀察者角色,其負(fù)責(zé)對(duì)執(zhí)行狀態(tài)進(jìn)行記錄。部署重試功能就是通過(guò)觀察者角色記錄的 CheckPoint 來(lái)實(shí)現(xiàn)。
核心框架與所有插件均以 python pip 包的形式保存在公司內(nèi)網(wǎng)的 pip server 上。每個(gè)插件擁有自己的代碼庫(kù),不同插件開(kāi)發(fā)、調(diào)試、發(fā)布新版本可以完全隔離。
planting 的核心特性概述如下:
提供部署核心框架與一套靈活可擴(kuò)展的插件體系
部署執(zhí)行方式簡(jiǎn)單,支持命令行與自動(dòng)化測(cè)試 CI 可緊密合作
支持腳手架功能,插件上手簡(jiǎn)單,編寫(xiě)效率高
使用 Ansible 源碼,復(fù)用 Ansible 優(yōu)秀特性
部署過(guò)程支持失敗重試功能
遠(yuǎn)程控制具有可擴(kuò)展性,能根據(jù)需求增加對(duì)新設(shè)備的控制
不僅僅是一個(gè)部署框架也是一個(gè)自動(dòng)化運(yùn)維框架
提供部署核心框架與一套靈活可擴(kuò)展的插件體系
作為一家 AI 創(chuàng)業(yè)公司,產(chǎn)品線眾多,不可能搞一個(gè)大而全的部署工具,維護(hù)成本太高。通過(guò)核心框架與插件化相結(jié)合的思路能夠讓多產(chǎn)品線部署工具獨(dú)立開(kāi)發(fā),完全解耦。對(duì)于具有共性的部署問(wèn)題可以通過(guò)框架層解決,不讓各個(gè)插件重復(fù)造輪子。
部署執(zhí)行方式簡(jiǎn)單,支持命令行與自動(dòng)化測(cè)試 CI 可緊密合作
作為一個(gè)為測(cè)試工程師開(kāi)發(fā)的部署框架,通過(guò)命令行進(jìn)行自動(dòng)化部署是第一選擇。命令行能同時(shí)滿足手動(dòng)部署以及CI自動(dòng)化測(cè)試前的部署。
支持腳手架功能,插件上手簡(jiǎn)單,編寫(xiě)效率高
每個(gè)部署插件以 python pip 軟件包形式發(fā)布。為了降低每個(gè)產(chǎn)品線開(kāi)發(fā)部署工具的學(xué)習(xí)成本,比如學(xué)習(xí)使用 setup 的規(guī)范。我們提供了整個(gè)框架包括 setup 文件,可以一鍵打包。同時(shí)通過(guò)腳手架,我們把目錄進(jìn)行了定制,并實(shí)現(xiàn)了一個(gè)最簡(jiǎn)單的部署功能。讓插件開(kāi)發(fā)者可以快速模仿并實(shí)現(xiàn)自己的部署功能。
使用 Ansible 源碼,復(fù)用 Ansible 優(yōu)秀特性
使用 Ansible 源碼的方式讓我們擺脫了用 yaml 語(yǔ)法來(lái)定義部署過(guò)程的束縛。Ansible 變成了整個(gè)部署框架的一個(gè)組件,它可以提供遠(yuǎn)程控制能力,并發(fā)能力。它提供的各種方便的功能模塊,減少了我們很多重復(fù)造輪子的時(shí)間。
部署過(guò)程支持失敗重試功能
部署過(guò)程的失敗重試功能往往在部署復(fù)雜軟件時(shí)效果明顯,可以節(jié)約很多從頭重新部署的時(shí)間。
遠(yuǎn)程控制具有可擴(kuò)展性,能根據(jù)需求增加對(duì)新設(shè)備的控制
在整個(gè)部署框架設(shè)計(jì)之初,我們就考慮了未來(lái)可能增加更多需要控制和部署的設(shè)備或者系統(tǒng)。因此框架遠(yuǎn)程控制接口變成可擴(kuò)展對(duì)我們意義重大,在需要的時(shí)候隨時(shí)可以增加或者替換新的遠(yuǎn)程控制庫(kù)。
不僅僅是一個(gè)部署框架也是一個(gè)自動(dòng)化運(yùn)維框架
雖然這個(gè)工具本身為部署而生,但是其本質(zhì)是遠(yuǎn)程控制,遠(yuǎn)程操作。因此其完全有能力根據(jù)需求擴(kuò)展成一個(gè)自動(dòng)化運(yùn)維框架。
作為一個(gè)過(guò)來(lái)人,對(duì)學(xué)習(xí)過(guò)程中的困難深有體會(huì)。所以我熱衷于收集整理資源,記錄踩坑到爬坑的過(guò)程。希望能把自己所學(xué),實(shí)際工作中使用的技術(shù)、自學(xué)方法、心得及踩過(guò)的一些坑,記錄下來(lái)。
更希望想自學(xué)的你一樣,通過(guò)我的分享可以少走一些彎路,可以形成一條自己的體系,并應(yīng)用到實(shí)際中。當(dāng)然,也真心的希望你們升職加薪,或許這才是最實(shí)際的吧。
對(duì)于做【軟件測(cè)試】的朋友來(lái)說(shuō)應(yīng)該是最全面最完整的備戰(zhàn)倉(cāng)庫(kù),這個(gè)倉(cāng)庫(kù)也陪伴我走過(guò)了最艱難的路程,希望也能幫助到你,如果你用得到的話可以直接拿走:
包括了很多測(cè)試行業(yè)常見(jiàn)知識(shí),其中包括了有基礎(chǔ)知識(shí)、Linux必備、Shell、互聯(lián)網(wǎng)程序原理、Mysql數(shù)據(jù)庫(kù)、抓包工具專題、接口測(cè)試工具、測(cè)試進(jìn)階-Python編程、Web自動(dòng)化測(cè)試、APP自動(dòng)化測(cè)試、接口自動(dòng)化測(cè)試、測(cè)試高級(jí)持續(xù)集成、測(cè)試架構(gòu)開(kāi)發(fā)測(cè)試框架、性能測(cè)試、安全測(cè)試,面試時(shí)面試官必問(wèn)的知識(shí)點(diǎn),精選簡(jiǎn)歷等。我的QQ技術(shù)交流群(技術(shù)交流和資源共享,廣告勿擾)
可以自助拿走,群號(hào):1125939340 群里的免費(fèi)資料都是筆者這些年來(lái)的·測(cè)試生涯的精華。還有同行大神一起交流技術(shù)哦
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/119658.html
摘要:公司始于名為的平臺(tái)即服務(wù)供應(yīng)商??缍鄠€(gè)機(jī)器之間協(xié)調(diào)這些容器需要額外的工具,這稱之為容器編排。的核心優(yōu)勢(shì)是為應(yīng)用程序開(kāi)發(fā)人員提供了用于編排無(wú)狀態(tài)容器的強(qiáng)大工具。有無(wú)數(shù)的文章都在討論和比較Docker、Kubernetes 以及Mesos。如果你是初學(xué)者,那么你可能會(huì)認(rèn)為這三個(gè)開(kāi)源項(xiàng)目正為了稱霸容器界而殊死搏斗。雖然這三種技術(shù)都使得使用容器部署、管理和伸縮應(yīng)用成為可能,但實(shí)際上它們各自解決了不同...
摘要:聯(lián)調(diào)測(cè)試,無(wú)需依賴他人。針對(duì)以上問(wèn)題,有兩種解決方法,一個(gè)是自己搭建私有服務(wù),另一個(gè)是用云服務(wù)的鏡像管理平臺(tái)如阿里云的容器鏡像服務(wù)。利用,先對(duì)阿里云的服務(wù)進(jìn)行登錄。推送后,就能在阿里云的倉(cāng)庫(kù)上看到這個(gè)鏡像。 Docker簡(jiǎn)述 Docker是一種OS虛擬化技術(shù),是一個(gè)開(kāi)源的應(yīng)用容器引擎。它可以讓開(kāi)發(fā)者將應(yīng)用打包到一個(gè)可移植的容器中,并且該容器可以運(yùn)行在幾乎所有l(wèi)inux系統(tǒng)中(Windo...
摘要:發(fā)布本周正式發(fā)布,包含了一系列的特性提升與問(wèn)題修復(fù),同時(shí)也在不斷致力于將打造地更為輕巧與高性能。當(dāng)然,姜振勇老師還會(huì)介紹的多種服務(wù),包括大數(shù)據(jù)網(wǎng)絡(luò)和安全,展現(xiàn)彈性安全和高可擴(kuò)展性的全方位能力。 showImg(http://upload-images.jianshu.io/upload_images/1647496-2ce7598e6987d9af.jpg?imageMogr2/aut...
摘要:圍繞以太坊的開(kāi)發(fā)生態(tài)是目前相對(duì)最成熟的,比如有開(kāi)發(fā)框架,有智能合約在線集成開(kāi)發(fā)環(huán)境,還有專設(shè)的開(kāi)發(fā)者問(wèn)答頻道。 showImg(https://segmentfault.com/img/bVbaJOL?w=1200&h=514); 張泉靈說(shuō),時(shí)代拋棄我們的時(shí)候連聲再見(jiàn)都不會(huì)說(shuō),馬云說(shuō)對(duì)于新興事物,絕大多數(shù)人是看不見(jiàn)、看不起、看不懂、來(lái)不及。自從學(xué)完 Coursera 上的 Crypto...
閱讀 2725·2021-11-17 17:00
閱讀 2015·2021-10-11 10:57
閱讀 3846·2021-09-09 11:33
閱讀 1039·2021-09-09 09:33
閱讀 3616·2019-08-30 14:20
閱讀 3424·2019-08-29 11:25
閱讀 2874·2019-08-26 13:48
閱讀 818·2019-08-26 11:52