企業級 CI/CD 工具部署 Serverless 應用的落地實踐

頭圖.jpg

做者 | 李鑫(繽智) 阿里雲高級技術專家
來源 | Serverless 公衆號,整理自《Serverless 技術公開課》html

背景知識 

1.png

經過以往幾節課程的學習,相信你們對於 SAE 平臺已經有了必定的瞭解。SAE 爲客戶免除了不少複雜的運維工做,開箱即用、按用量付費;與此同時 SAE 提供了豐富的 Open API,能夠很容易地與其餘平臺作集成;相似雲效以及 Jenkins 的 CI/CD 工具是敏捷軟件研發實踐中的重要一環,能夠自動化地將客戶的代碼編譯、測試、打包並部署至各個環境,從而提高團隊的研發效率。java

本篇文章分爲兩個部分,首先介紹使用雲效平臺實現從源碼到 SAE 環境的持續集成,而後介紹使用 Jenkins 的狀況下持續集成該如何配置。docker

使用雲效部署到 SAE

雲效(rdc.console.aliyun.com),是阿里雲推出的企業級一站式 Devops 平臺型產品,功能覆蓋了從【需求->開發->測試->發佈->運維->運營】全流程。對雲效感興趣的同窗能夠去【阿里雲官網】搜索【雲效】,本文只介紹與 CI/CD 相關的部分功能。less

2.PNG

如上圖所示,圖的上半部分是咱們的配置流程,下半部分的流程圖是咱們所要執行的持續集成流程的示例。雲效首先會從代碼倉庫中拉取相應的代碼,而後進行代碼檢查以及單元測試,接着是代碼編譯構建,這一步會產出相應的生成物:在這裏咱們用一個 java 應用來舉例,若是構建產出物這一步選擇是 jar 類型,那麼流水線在運行時運行 mvn package 命令產出對應的 jar 包;若是構建產出物類型是 Docker 鏡像,那麼在構建這一步在產出 jar 包後會繼續執行 docker build 命令來構建對應的 Docker 鏡像並上傳到您所選擇的 ACR 鏡像倉庫;流水線的最後兩步是調用 SAE 的 Open API 將構建物(jar 包/Docker 鏡像)部署分發到測試環境,根據咱們預先的設置,在部署完測試環境這一步後流水線會停下來等待手動觸發下一步操做;等待手動驗證測試環境的部署一切正常後,手動觸發流水線繼續運行,此次將調用 Open API 部署到生產環境。運維

操做步驟:maven

  • 首先肯定代碼的編譯打包配置都正確,在本地能夠正常地編譯打包成功,若是是鏡像方式部署,那麼會要求項目根目錄下有對應的Dockerfile配置;
  • 在 SAE 控制檯中建立相應的應用,請注意若是有多環境部署需求,好比部署到 test(測試)、product(生產) 環境,請先建立對應的 test 命名空間 以及 product 命名空間 並在 命名空間 中建立應用;
  • 在雲效中作好相應的配置,包括源碼倉庫配置及流水線配置,具體配置細節請參考相應的產品幫助文檔
  • 最後一步點擊「運行」觸發流水線執行編譯部署;

使用 Jenkins 部署 SAE

Jenkins 是被業界普遍使用的開源 CI/CD 平臺,使用 Jenkins 能夠將源碼打包編譯後部署至 SAE,其達成的最終效果與「經過雲產品雲效部署至SAE」相似,經過 Jenkins 將應用源碼編譯成爲 jar 包,而後經過maven plugin 來調用 SAE 的 Open API 部署接口將應用部署至 SAE。ide

3.PNG

操做步驟:工具

  • 代碼庫中有相應的打包配置,在使用 Jenkins 時咱們打包的產出構建物是 jar 包,因此此處要求咱們項目根目錄下有對應的 maven配置文件 pom.xml;
  • 在部署以前須要在 SAE 平臺中建立相應的命令空間、應用,並經過初始化部署來完成應用配置;
  • 在 Jenkins 中完成相應Docker插件的配置,同時須要在 Jenkins 中建立並配置相應的 Project;Project能夠配置成手動觸發或者配置成提交代碼時觸發編譯及部署,具體配置請參考對應的產品幫助文檔

部署過程視頻演示,請點擊連接觀看:https://developer.aliyun.com/lesson_2026_19006單元測試

總結

看到這裏,相信你們已經學會了如何使用 CICD 工具將源碼很是輕鬆地部署至 SAE 平臺,但願持續集成平臺與 SAE 這個能夠提高研發效能的組合,幫助您的業務快速起飛!學習

相關文章
相關標籤/搜索