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