現(xiàn)如今,大連IOS手機(jī)應(yīng)用軟件開發(fā)單元測試、自動化驗收測試、持續(xù)集成等技術(shù)手段已被很多項目團(tuán)隊所采用,它們可以在軟件開發(fā)活動中很大程度地保證開發(fā)軟件地正確性(即是否滿足了新的需求并且沒有破壞已有的需求)。但是如果軟件無法順利地部署到生產(chǎn)環(huán)境上,就不能帶來任何商業(yè)價值。
作為軟件開發(fā)人員,為了驗證軟件是否能夠部署成功,不應(yīng)該只在軟件設(shè)計、開發(fā)、測試等階段結(jié)束后才向生產(chǎn)環(huán)境或準(zhǔn)生產(chǎn)環(huán)境部署,而應(yīng)該把部署作為整個軟件開發(fā)活動的一部分,從項目之初,就在項目整個持續(xù)過程中實現(xiàn)自動化的構(gòu)建、部署、測試,即“部署流水線”。
致遠(yuǎn)服軟認(rèn)為:http://www.soft8.com.cn/有了“部署流水線”之后,當(dāng)我們在每次代碼提交時,都有可能向測試環(huán)境、準(zhǔn)生產(chǎn)環(huán)境等不同環(huán)境部署軟件并測試,這時會有如下情況涉及到自動化部署。
? 自動化驗收測試前,需要使用最新構(gòu)造的結(jié)果部署到持續(xù)集成的測試環(huán)境上。
? 當(dāng)測試需要驗證某一個版本的產(chǎn)品時,可以自動地創(chuàng)建出來該版本的一個環(huán)境。
? 在性能測試、UAT 驗收測試、給業(yè)務(wù)人員演示(showcase)時,可以自動化創(chuàng)建出某一個版本的環(huán)境。
? 自動化地向生產(chǎn)環(huán)境部署。
這就要求我們擁有自動化部署的能力,它有如下特點。
? 需要有大連IOS手機(jī)應(yīng)用軟件開發(fā)的基礎(chǔ)管理能力,比如很方便地創(chuàng)建一個節(jié)點甚至一整套環(huán)境。
? 部署過程代碼化,能夠自動化的安裝、配置軟件。
? 在向各個環(huán)境部署時,使用相同的自動化代碼。
? 各個環(huán)境與生產(chǎn)環(huán)境都需要盡可能相似,有同樣的操作系統(tǒng)底層組件網(wǎng)絡(luò)配置等。
這樣當(dāng)我們將大連IOS手機(jī)應(yīng)用軟件開發(fā)最終向生產(chǎn)環(huán)境部署時,同樣的部署代碼已經(jīng)在類似的環(huán)境中使用并測試過,對于發(fā)布我們就有足夠的信心能夠成功。
由上可以看出,自動化部署最主要的問題在于如何創(chuàng)建基礎(chǔ)設(shè)施以及如何安裝和配置軟件產(chǎn)品。
在這里我們先說說Android中的單元測試自動化地安裝和配置軟件產(chǎn)品。只要是手工過程可以完成的安裝和配置工作,理論上我們都可以將其代碼腳本化。開發(fā)人員或者系統(tǒng)管理員完全可以通過Bash或者PowerShell來完成這些工作。這要求我們將部署代碼以及更為重要的環(huán)境配置文件都當(dāng)作產(chǎn)品的一部分,放入版本控制庫中。
現(xiàn)如今已經(jīng)有了很多自動化準(zhǔn)備技術(shù),可以幫助開發(fā)人員實現(xiàn)部署腳本,比如比較流行的Puppet和Chef。
以Chef(http://wiki.opscode.com/display/chef/Home)舉例,它是一個開源的系統(tǒng)配置和集成框架,它通過自定義的DSL領(lǐng)域語言來實現(xiàn)基礎(chǔ)設(shè)施和軟件環(huán)境的搭建并支持物理機(jī)器、虛擬機(jī)、云節(jié)點(理論上開放了 ssh 端口都可以)。由于 Chef 的部署代碼是Ruby語言,所以我們也可以很方便地對其擴(kuò)展,實現(xiàn)任何自定義的功能。