企业级 CICD 工具部署 Serverless 应用的落地实践
作者 | 李鑫(繽智) 阿里云高級技術(shù)專家
背景知識
通過以往幾節(jié)課程的學習,相信大家對于 SAE 平臺已經(jīng)有了一定的了解。SAE 為客戶免除了很多復雜的運維工作,開箱即用、按用量付費;與此同時 SAE 提供了豐富的 Open API,可以很容易地與其他平臺做集成;類似云效以及 Jenkins 的 CI/CD 工具是敏捷軟件研發(fā)實踐中的重要一環(huán),可以自動化地將客戶的代碼編譯、測試、打包并部署至各個環(huán)境,從而提升團隊的研發(fā)效率。
本篇文章分為兩個部分,首先介紹使用云效平臺實現(xiàn)從源碼到 SAE 環(huán)境的持續(xù)集成,然后介紹使用 Jenkins 的情況下持續(xù)集成該如何配置。
使用云效部署到 SAE
云效(rdc.console.aliyun.com),是阿里云推出的企業(yè)級一站式 Devops 平臺型產(chǎn)品,功能覆蓋了從【需求->開發(fā)->測試->發(fā)布->運維->運營】全流程。對云效感興趣的同學可以去【阿里云官網(wǎng)】搜索【云效】,本文只介紹與 CI/CD 相關(guān)的部分功能。
如上圖所示,圖的上半部分是我們的配置流程,下半部分的流程圖是我們所要執(zhí)行的持續(xù)集成流程的示例。云效首先會從代碼倉庫中拉取相應(yīng)的代碼,然后進行代碼檢查以及單元測試,接著是代碼編譯構(gòu)建,這一步會產(chǎn)出相應(yīng)的生成物:在這里我們用一個 java 應(yīng)用來舉例,如果構(gòu)建產(chǎn)出物這一步選擇是 jar 類型,那么流水線在運行時運行 mvn package 命令產(chǎn)出對應(yīng)的 jar 包;如果構(gòu)建產(chǎn)出物類型是 Docker 鏡像,那么在構(gòu)建這一步在產(chǎn)出 jar 包后會繼續(xù)執(zhí)行 docker build 命令來構(gòu)建對應(yīng)的 Docker 鏡像并上傳到您所選擇的 ACR 鏡像倉庫;流水線的最后兩步是調(diào)用 SAE 的 Open API 將構(gòu)建物(jar 包/Docker 鏡像)部署分發(fā)到測試環(huán)境,根據(jù)我們預先的設(shè)置,在部署完測試環(huán)境這一步后流水線會停下來等待手動觸發(fā)下一步操作;等待手動驗證測試環(huán)境的部署一切正常后,手動觸發(fā)流水線繼續(xù)運行,這次將調(diào)用 Open API 部署到生產(chǎn)環(huán)境。
操作步驟:
- 首先確定代碼的編譯打包配置都正確,在本地可以正常地編譯打包成功,如果是鏡像方式部署,那么會要求項目根目錄下有對應(yīng)的Dockerfile配置;
- 在 SAE 控制臺中創(chuàng)建相應(yīng)的應(yīng)用,請注意如果有多環(huán)境部署需求,比如部署到 test(測試)、product(生產(chǎn)) 環(huán)境,請先創(chuàng)建對應(yīng)的 test 命名空間 以及 product 命名空間 并在 命名空間 中創(chuàng)建應(yīng)用;
- 在云效中做好相應(yīng)的配置,包括源碼倉庫配置及流水線配置,具體配置細節(jié)請參考相應(yīng)的產(chǎn)品幫助文檔;
- 最后一步點擊“運行”觸發(fā)流水線執(zhí)行編譯部署;
使用 Jenkins 部署 SAE
Jenkins 是被業(yè)界廣泛使用的開源 CI/CD 平臺,使用 Jenkins 可以將源碼打包編譯后部署至 SAE,其達成的最終效果與“通過云產(chǎn)品云效部署至SAE”類似,通過 Jenkins 將應(yīng)用源碼編譯成為 jar 包,然后通過maven plugin 來調(diào)用 SAE 的 Open API 部署接口將應(yīng)用部署至 SAE。
操作步驟:
- 代碼庫中有相應(yīng)的打包配置,在使用 Jenkins 時我們打包的產(chǎn)出構(gòu)建物是 jar 包,所以此處要求我們項目根目錄下有對應(yīng)的 maven配置文件 pom.xml;
- 在部署之前需要在 SAE 平臺中創(chuàng)建相應(yīng)的命令空間、應(yīng)用,并通過初始化部署來完成應(yīng)用配置;
- 在 Jenkins 中完成相應(yīng)Docker插件的配置,同時需要在 Jenkins 中創(chuàng)建并配置相應(yīng)的 Project;Project可以配置成手動觸發(fā)或者配置成提交代碼時觸發(fā)編譯及部署,具體配置請參考對應(yīng)的產(chǎn)品幫助文檔;
部署過程演示,請點擊鏈接觀看:https://developer.aliyun.com/lesson202619006
總結(jié)
看到這里,相信大家已經(jīng)學會了如何使用 CICD 工具將源碼非常輕松地部署至 SAE 平臺,希望持續(xù)集成平臺與 SAE 這個可以提升研發(fā)效能的組合,幫助您的業(yè)務(wù)快速起飛!
課程推薦
為了更多開發(fā)者能夠享受到 Serverless 帶來的紅利,這一次,我們集結(jié)了 10+ 位阿里巴巴 Serverless 領(lǐng)域技術(shù)專家,打造出最適合開發(fā)者入門的 Serverless 公開課,讓你即學即用,輕松擁抱云計算的新范式——Serverless。
點擊即可免費觀看課程:https://developer.aliyun.com/learning/roadmap/serverless
Serverless 公眾號,發(fā)布 Serverless 技術(shù)最新資訊,匯集 Serverless 技術(shù)最全內(nèi)容,關(guān)注 Serverless 趨勢,更關(guān)注你落地實踐中的遇到的困惑和問題。
總結(jié)
以上是生活随笔為你收集整理的企业级 CICD 工具部署 Serverless 应用的落地实践的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在线应用的 Serverless 实践
- 下一篇: Spring Cloud/Dubbo 应