本示例模板是用于從Git拉取代碼,構建成軟件包并上傳至OSS,并批量部署到多臺ECS。該模板既支持在用戶已有ECS上構建,也支持臨時開啟一臺ECS構建后釋放。
前提條件
您已創建ECS實例,且ECS實例已經開通公網,更多信息,請參見實例創建方式介紹、為ECS實例開通公網。
您已開通OSS對象存儲,更多信息,請參見開始使用OSS。
步驟總覽
下圖展示了該示例模板的兩個步驟:
第一步:由您指定代碼源,比如OSS對象存儲或者Git,OOS將為代碼源生成臨時鏈接,用于后續拉取。
第二步:構建軟件包(如JAR包)并上傳到OSS
第三步:拉取上一步構建的軟件包,批量在多臺ECS上部署。
使用示例
本示例使用了一個Spring Boot的示例項目代碼來演示,代碼已上傳到gitee和github倉庫,如果想要使用,請先fork到自己的倉庫。代碼地址:
gitee:gitee示例代碼(中國內地建議使用gitee)
github:github示例代碼
以下演示是在Alibaba Cloud Linux 3.2104操作系統下,不同環境可能會相關的構建部署命令不同,請按需調整。
創建模板
從系統運維管理控制臺 ,單擊創建模板。
選擇構建軟件包,上傳到OSS(git代碼源)示例模板,單擊下一步。
單擊全部收起,可以看到該模板的步驟。
單擊全部展開,開始填寫模板。
第一個步驟是指定您的代碼源。為下一步驟拉取代碼。生成一個臨時鏈接。
本示例以gitee為代碼源,在填寫所有者、組織、倉庫前,請先完成授權。
授權后選擇您想要拉取的代碼倉庫(如果您之前已經fork示例代碼,您只需下拉倉庫,會自動展示您賬號下所有倉庫,請選擇fork的示例代碼倉庫),后續執行模板時,OOS會生成該倉庫的臨時鏈接,并作為任務輸出authorizedUrl,給后續任務使用。
第二個步驟是構建軟件包(如JAR包)并上傳到OSS。
首先您需要指定代碼源,本示例是Git,代碼源鏈接引用了上一個任務的輸出authorizedUrl。
說明OOS會自動幫您拉取代碼到一個特定文件夾,如下圖,后續所有命令都以該文件夾為工作路徑。
接下來您需要選擇構建的ECS,您可以選擇在已有ECS構建,或者臨時開啟一臺ECS,構建完成后自動釋放。
說明注意,臨時ECS會以按量付費的方式產生費用。
另外,您需要提供構建信息。首先是構建命令腳本,該示例的構建腳本里,先安裝了Maven,然后打JAR包,JAR包會放在target目錄下(本文是在Alibaba Cloud Linux 3.2104操作系統下以Java應用程序為例,構建腳本您可按需換成適合自己項目的,這里僅是提供一個示例)。您還需要提供打包路徑和構建物名稱,比如當前示例,我們指定打包路徑為target/,OOS會將該文件夾壓縮為一個.tgz文件,文件名就是您指定的構建物名稱。
最后,您可指定想要上傳到的OSS bucket和bucket里的目錄。該任務會將bucketName(OSS bucket的名稱)和objectName(構建物在bucket內的完整路徑,目錄+構建物名稱)作為輸出,給后續任務使用。后續任務可直接引用這些輸出,不用重新填寫。
第三個步驟是批量在多臺ECS上部署。
首先,選擇要部署到的ECS,這里您可以選擇多個ECS批量部署。
您還需提供構建物所在OSS的信息,Bucket和Object名稱我們可以引用上一步的輸出,無需重復填寫。您還需要指定下載到的路徑,這里默認下載到
/home/admin/app/
。最后,您可以給出部署腳本。對于當前示例,先把.tgz壓縮包解壓到指定路徑,然后使用
java -jar
命令運行我們打的JAR包,并指定端口為8080。您還可以選擇任務的并發控制參數,控制批量部署到多臺ECS的并發速率。填寫完畢,單擊創建模板,完成創建。
執行模板
在自定義任務模板頁面找到剛才創建的模板,單擊創建執行,即可執行該模板。無需配置參數,單擊下一步:確定。
等待執行成功后,請去往ECS控制臺,找到您選擇的ECS實例,遠程連接進入ECS。
執行以下命令。
curl http://localhost:8080/hello
看到返回字段,即表明部署成功。
后續使用
后續如果您的代碼有更新,您只需把代碼推送到相應Git倉庫,然后重新執行該CI/CD模板,該流水線會為您拉取最新代碼,重新打包并推送至OSS對象存儲。然后,最新版本的軟件包會被批量的部署到您指定的多臺ECS上。當然,如果您需要調整模板,也可以更新模板后再重新執行。