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