在之前的文章《使用 Spring Tool Suite 快速開發 EDAS HSF 服務》中說到了如何快速開發運作在EDAS上的服務化應用,本文接着說說如何使用雲效再加速應用的研發。
雲效是一個一站式的研發效能工具,提供了從“計劃->需求->開發->建構->測試->部署->營運”一體化的協同服務和研發支撐。使用雲效可以對應用進行快速疊代研發,滿足DevOps的最佳實踐。下面就按步驟看看雲效是如何加速EDAS HSF服務的開發的。

進入項目之後,通過設定 > 成員将團隊成員加入到項目中,這樣團隊成員在登陸後能在自己的項目清單中看到相應的項目,就能協同開發應用了。
在阿裡雲控制台 > 企業級分布式應用服務 > 資源管理 > 叢集裡面可以建立叢集,本文使用的是Swarm類型的容器叢集,也可以選擇ECS叢集,但是不能選擇Kubernetes類型的容器叢集,因為目前雲效還不支援與Kubernetes類型的容器叢集對接,無法将建構産物自動部署過去。
在應用管理中建立一個新的應用,應用運作環境可以選擇最新版本的EDAS-Container 3.3.9。
建立完應用後,記下應用ID,在對接雲效的時候需要用到。
在項目中,通過應用 > 注冊應用來建立應用,一個項目中可以包含多個應用。
Git庫:注冊應用的時候需要綁定Git庫,如果已經有Git庫了,使用關聯已有來關聯,建立的話雲效會在阿裡雲GitLab(code.aliyun.com)上建立一個新的Git代碼庫。這裡需要注意的是,阿裡雲GitLab使用單獨的使用者管理,在GitLab上需要把之前準備工作步驟中的團隊成員再加入進來,通過GitLab > Project > Members > Add new user to project來配置。Master權限可以送出代碼到master,Developer權限則隻能送出代碼到branch。
分支模式:自由模式通常是對master進行主幹開發,使用master來開發、內建和部署釋出。master上的任何變化,會觸發流水線執行建構、部署等連續操作。分支模式則是對特性分支進行開發。這裡采用自由模式,直接對master進行開發、內建和釋出,以便更直覺的看到雲效流水線帶來的效果。
這個步驟事實上為了生成release檔案,release檔案控制的是程式類型、開發語言及版本,本文的示例使用的是Java 1.7,初始化模闆是Spring Boot。産物路徑是灰掉不可更改的,之後可以在Git庫裡直接修改release檔案。
最後一步是配置應用,因為是要将應用部署到EDAS的容器叢集中,是以這裡選擇部署方式為EDAS部署。
在注冊應用完成後,進入應用 > 環境可以看到目前應用對應的環境清單,雲效在注冊應用時自動建立了測試環境(日常環境)、生産環境(預發環境、正式環境)三個配置,本文示例隻對測試環境進行配置,以便連結到EDAS叢集。進入日常環境 > 部署配置,選擇部署方式為EDAS部署,EDAS應用ID就是之前在準備工作步驟中記下的應用的ID。
在Spring Tool Suite(STS)中克隆阿裡雲GitLab上的代碼庫,URI可以在code.aliyun.com對應的Git庫裡複制到,使用者認證則使用GitLab中配置的使用者名和密碼(務必注意不是子賬号)。
克隆完成後導入Git庫裡的項目,也就是雲效自動建立的模闆應用,導入後,将《使用 Spring Tool Suite 快速開發 EDAS HSF 服務》裡建立的HSF服務應用手工Merge進來。
注冊應用時,雲效自動生成了release檔案,在項目裡我們需要确認這裡的配置是否正确,需要注意以下兩個配置項。
注冊應用後,雲效會自動建立一條預設的流水線,包含了建構 > 部署到測試環境 > 部署到預發環境 > 部署到正式環境這幾個步驟,本文隻有測試環境,是以需要編輯流水線來删除部署到預發環境和部署到正式環境這兩個階段。當然在編輯流水線頁面上,也可以加入新的階段和每個階段的任務,以及配置監聽、流轉條件(手動和自動)等,編輯頁面如下圖所示。
DevOps實踐中的研發、持續內建、自動化測試、持續部署和釋出都可以在流水線中自動化流轉,可以說流水線在真正意義上實作了DevOps過程的一體化,展現了靈活、高效的精神。
所有步驟完成之後,可以在本地IDE中送出代碼,送出成功後,可以在阿裡雲GitLab的Commits記錄裡看到送出的記錄,本例子裡,将Ping頁面加了個字元串,以便直覺的體驗應用更新的變化。
雲效在監聽到代碼改變後,會自動觸發流水線進行建構,在本示例中跳過了測試階段,真正實用角度來說,任何應用需要測試通過後,才可以被釋出。下圖是流水線執行成功的示意圖,注意看到Commit号與之前Git庫的變化曆史是一緻對應的。
流水線成功執行後,可以到阿裡雲的控制台中檢視EDAS的運作情況,在變更記錄中記錄了流水線執行部署的事件。
通過浏覽器檢查Ping頁面,發現應用已經被成功更新,如下圖所示:
本文通過一個簡單的EDAS HSF服務應用開發,介紹了雲效和EDAS容器叢集在實際研發過程中的結合使用方法。這兩者的結合極大程度的提高了應用研發的靈活性,真正實作了DevOps的持續內建、持續部署釋出的理念。當然也希望公有雲雲效能提供更多、更完善的支援,例如EDAS Kubernetes叢集的部署,更多的編譯建構器等等。