如何在紅帽O(jiān)penShift上設(shè)計云應(yīng)用?
紅帽O(jiān)penShift是一個結(jié)合了流行源代碼管理和自動化構(gòu)建和測試工具優(yōu)勢的PaaS。雖然該平臺旨在實現(xiàn)一些云開發(fā)者的工作,但是并非適用于每一個人。
如果你更喜歡使用Git管理你的代碼,并且用Jenkins進行持續(xù)集成,OpenShift會讓你感覺如同在家般舒適。如果你正在使用其他的源代碼庫,而且考慮轉(zhuǎn)到紅帽O(jiān)penShift上,關(guān)于平臺即服務(wù)(PaaS)有幾件事情需要了解,幫助你更好地簡化應(yīng)用開發(fā)工作。
理解紅帽O(jiān)penShift的基礎(chǔ)
OpenShift以紅帽企業(yè)Linux為基礎(chǔ),運行在裸機、虛擬服務(wù)器或者云端。應(yīng)用運行在平臺即服務(wù)中的結(jié)點,通過同樣運行在相同PaaS的中間件來管理。結(jié)點可以使用紅帽稱之為“齒輪”的Linux容器運行在多種環(huán)境中。容器通過控制群組隔離流程和功能,從而分配計算資源,提供類似虛擬機的服務(wù),但是開支更少。
開發(fā)者可以在集成的開發(fā)環(huán)境中構(gòu)建自己的代碼,比如Eclipse,隨后將其部署在齒輪中運行。作為這個流程的一部分,你需要選擇將要使用的編程語言,以及其他的組件,比如數(shù)據(jù)庫和Web服務(wù)器。本地的Git庫管理應(yīng)用代碼;到部署的時候,你可以簡單的push(Git命令)這個代碼到合適的環(huán)境中(如測試、開發(fā)或者生產(chǎn))。
用Jenkins在OpenShift中自動化測試
代碼的本地單元測試很重要;然而,在任何重要的軟件開發(fā)工作中,運行集成測試需要很多執(zhí)行路徑貫穿代碼。這個過程耗時且冗長,而且如果你依賴于過多的人工步驟,就會受到錯誤的限制。自動化測試為Jenkins構(gòu)建到紅帽O(jiān)penShift中起到一定的幫助作用。
在你的紅帽O(jiān)penShift開發(fā)中使用Jenkins時,你可以同往常一樣將代碼提交到Git庫中。當(dāng)Jenkins在庫中檢測到新的代碼,就會構(gòu)建應(yīng)用,并且運行一套自定制測試。如果測試成功,代碼部署。相反代碼就會繼續(xù)運行已經(jīng)部署好的部分。這將有效阻止不注意將錯誤代碼部署,而且可能要到用戶運行你的應(yīng)用時才會發(fā)現(xiàn)這個錯誤。
應(yīng)用***實踐到Git和Jenkins
由于Git和Jenkins都通紅帽O(jiān)penShift緊密集成,使用它們的***實踐適用于在這個服務(wù)中管理你的代碼。
Git***實踐始于一次提交,保存了你的代碼狀態(tài),但是并沒有部署。一次提交是創(chuàng)建一個檢查點的途徑,如果你代碼實現(xiàn)了突破??梢曰仡櫋Mㄟ^多種提交,你可以有更好地機會在上一個工作版本和***個突破代碼之間實現(xiàn)一小套變更集。
考慮如何在Git庫中管理代碼分支。一種流行的模型是用一個包含所有發(fā)布到生產(chǎn)以及替代分支的代碼的主分支,比如開發(fā)和測試。在一些項目中,將會有一個主題分支:為一個單一的特性有一個短期的分支封裝代碼。當(dāng)代碼穩(wěn)定時,就可以合并到其他的分支中。
為將代碼推進到生產(chǎn)階段創(chuàng)建規(guī)程。這些應(yīng)該包括標(biāo)記分支的命名規(guī)則,以及一旦發(fā)布后不再更新分支的規(guī)則。
在使用Jenkins時,建議從源代碼完全構(gòu)建應(yīng)用。為了完全從源構(gòu)建,其他的庫和支持代碼必須在源控制之下。
Jenkins的job應(yīng)該用來構(gòu)建和測試代碼。測試集成代碼可以發(fā)現(xiàn)在單元測試中沒有發(fā)現(xiàn)的缺陷。使用獨立的job來構(gòu)建和測試不同的分支,允許你自定制測試,并且為每一個分支的具體類型實施動作。