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