天天看點

Azure雲中Web應用的持續內建實踐

由于從事的工作領域關系,目前會或多或少的關注DevOps課題的相關領域,當然目前還在嘗試多種适應于持續開發持續內建領域的工具群組合方式,個人粗淺的領會是DevOPS其實既不會隻是開發者需要關注的,也是運維人員應該關注的領域,因為未來的IT世界其實是個"相對混合"的空間,發展之快超出想象;在開發測試領域的工具上看,Chef/Puppet/PowerShell DSC,到開源領域廣泛應用Salt Stack, Ansible到 Docker生态圈等封裝一系列基礎架構即代碼等概念的湧現,無時不刻的不在提醒我們演進背後的力量的本質,是業務對IT系統的能力持續提高,舉例來說需要通過持續開發,持續內建的方式實作應用功能,代碼疊代更新靈活性的快速提升;為了實作這些目的,大量的網際網路公司已經開始率先進行了實踐,當然不一定是全棧的實踐;但是至少在某些領域已經積累了大量的經驗,并且開始向下一個拆分大的應用結構到細微Restful API結構,獨立運維和擴充,并且通過網關叢集來傳遞的微服務結構;在這樣大的領域變革激蕩的演化過程中,對于開發運維環境的改變不能原地踏步,逆水行舟不進則退;如果現在還僅僅滿足于點幾下滑鼠或者期望在複雜的IT系統中探索标準化IT服務,顯然有些落伍;這可能不是"生存"或是"毀滅"的問題,這是一個博弈才有機會參與的時代,是以願意或者不願意,身為IT從業者可能都不得不去開始探索和學習的。最初的持續開發和內建的實踐,我覺得先要從工具選擇上開始;要想做到高度自動化必須從大道至簡的原則出發,開發,過渡環境及生産環境的産生和變更,可以根據代碼Build版本控制變更或初始化觸發的釋出流程,輔以一套參數化結構通過簡單聲明式的封裝(類似開源領域的yml檔案,PowerShel DSC的配置檔案,亦或是Azure中的ARM模闆,亦或是Dockerfile當然也可能是Chef 的菜單rb配置),通過标準化的Provider驅動對于配置的跨環境标準化執行流程;一個持續內建的雛形就出來了;逐漸到上層結構輔以審批,資源注冊,生命周期管理及跟蹤等,那麼一個較為豐富的開發測試DevOps技術工具棧逐漸補全了;最後就是從應用開發端逐漸向微服務架構設計演進的過程;最終需要實作的效果自然是将持續開發,持續內建;适應業務快速的擴充和功能的疊代,減少由于基礎結構性是失卻,配置變更不到位或者大規模的回歸性測試造成的整體復原等一系列問題引發的對業務端的拖累和影響;是以其實挑戰也是機遇,為什麼曾經一度淘寶業務系統蓬勃發展也帶動了的各路“花名在冊”的大神風起雲湧,為啥現在開源時代又造就了那麼多的大師?為啥現在身為一個IT的運維人員推崇卻是Python等語言和架構?這一切背後的力量作為從業者感受到了嗎?如果是,那麼勇敢的人總會有機會嘗試并最終站在結構性的高峰的,總之,我信了...

步驟1,在本地完成

接下來,打開本地的Git環境,Windows的可以直接用GitBash

建立我們的測試WEB項目目錄,進入并初始化本地Git庫,

cd C:\Users\shzhai.FAREAST\Documents\GitHub\TestWebCIRepo

git init

我們的項目做個最簡單的就好,力求隻是為了測試代碼釋出和持續內建過程,是以這裡我們先在項目裡建立一個預設靜态頁面,

echo "My Demo page!" > .\index.html

現在添加頁面到本地的Git庫中,

git add .\index.html

我們送出改變并添加注釋到本地庫,

git commit -m "Add the first static page to local repo!"

步驟2,在Azure端設定Web應用庫

首先,我們在Azure國際版的新門戶中,添加一個Web應用MyCIWebDemo;

選擇持續內建,選擇源為本地Git存儲庫,

接下來設定需要持續部署的使用者憑據,

步驟3,現在開始部署本地的測試項目到Azure Web應用;

首先在部署區域,我們還沒有看到本地Git庫的部署;

接下來,我們選擇Web應用屬性或點選部署,進入到屬性設定選擇Azure的遠端Git部署URL,

我們現在來到本地Git控制台,添加剛剛複制的Azure遠端Git URL并制定遠端Git連接配接名為Azure;

git remote add azure https://[email protected]:443/MyCIWebDemo.git

接下來我們把本地的master版本代碼推送到Azure遠端Git端,輸入我們之前設定的使用者部署憑據;

git push azure master

我們可以在Azure的Web應用的部署中看到剛剛推送的部署;

點選部署連結,我們就可以看到剛剛部署的靜态頁面顯示了;

現在我們在本地項目目錄修改靜态頁面;

echo "<h2>New CI Demo!</h2>" > .\index.html

git add index.html

git commit -m "Check in New Page"

再次來到Web頁面檢視,Dida,已經改變過來了;實際環境內建會增加部署槽進行過渡測試;這個部分我們将再另文介紹;

最後,我們再體驗一下通過Azure Web應用與GitHub而不是本地Git庫的持續內建;如果不僅僅是本地開發項目,而是團隊協作的項目版本釋出到GitHub上,持續內建的好處是協作項目無論誰最終做的更新操作,那麼隻是與GitHub庫中最新的項目版本內建釋出到Azure雲中。

首先将代碼托管到GitHub中,

接下來我們需要在Azure Web應用持續內建端選擇GitHub;

選擇授權,并重定向到Github允許Azure的到Github的代理授權通路;接下來選擇GitHub組織用于項目選擇;

接下來選擇需要部署的GitHub項目和分支設定;

當我們确認之後,可以在通知區域看到部署過程;Azure将從GitHub項目分支中Checkout并進行部署;

檢視部署效果并驗證;

結語,其實開發測試環境持續內建是個非常大的課題,涉及到人,流程,工具等一系列内容;本文這裡隻是探索了冰山一角,但是工欲善其事必先利其器,Azure公有雲結構在設計時就充分考慮到對持續開發內建,部署等一系列相關問題,在工具端力求相容與盡善盡美;讓我們繼續慢慢探索吧!

本文轉自 翟老貓 51CTO部落格,原文連結:http://blog.51cto.com/3387405/1693917,如需轉載請自行聯系原作者