全部產品
Search
文件中心

CloudOps Orchestration Service:構建軟體包至OSS並部署

更新時間:Jan 03, 2025

本樣本模板是用於從Git拉取代碼,構建成軟體包並上傳至OSS,並批量部署到多台ECS。該模板既支援在使用者已有ECS上構建,也支援臨時開啟一台ECS構建後釋放。

前提條件

  • 您已建立ECS執行個體,且ECS執行個體已經開通公網,更多資訊,請參見建立執行個體開通公網

    重要

    本文樣本模板僅支援在Linux作業系統下構建。

  • 您已開通OSSObject Storage Service,且已建立OSS Bucket,更多資訊,請參見開通OSS服務建立儲存空間

樣本模板流程

  1. 由您指定代碼源(例如OSSObject Storage Service或Git),OOS將為代碼源產生臨時連結,用於後續拉取。

  2. 構建軟體包(如JAR包)並上傳到OSS。

  1. 拉取已構建的軟體包,批量在多台ECS上部署。

使用樣本

代碼源準備

本樣本使用了一個Spring Boot的樣本專案代碼來示範,代碼已上傳到Gitee和GitHub倉庫,如果想要使用,請先fork到自己的倉庫。代碼地址:

建立模板

  1. 登入CloudOps Orchestration Service控制台。

  2. 在左側導覽列,選擇自動化任務 > 自訂工作範本,單擊建立模板

  3. 構建部署地區,選擇構建軟體包至OSS並部署,單擊下一步

  4. 流程配置頁簽下,填寫模板參數,然後單擊建立模板

    1. 指定您的代碼源,為下一步拉取代碼做準備,產生一個臨時授權連結。

      本樣本以Gitee為代碼源,填寫該代碼源的所有者組織倉庫以及分支等參數。

      說明
      • 如果您未授權阿里雲從您的GitHub/Gitee讀取您的代碼倉庫,請單擊前往授權來完成授權操作。

      • 如果您之前已經Fork範例程式碼,您只需下拉倉庫,會自動展示您帳號下所有倉庫,請選擇Fork的範例程式碼倉庫。

      2024-12-16_11-42-41.png

    2. 構建軟體包(如JAR包)並上傳到OSS。

      1. 選擇代碼源和構建的ECS執行個體,再提供構建命令。

        oss.png

        • 代碼源:代碼源以選擇git為例,代碼源連結引用了上一個任務的輸出authorizedUrl

        • 選擇構建Ecs:您需要選擇構建的ECS,支援在已有ECS構建新啟動臨時ECS構建兩種方式。

          說明

          選擇新啟動臨時ECS構建方式,系統會以隨用隨付的方式產生費用。另外,OOS會自動檢測ECS上是否已安裝Docker,如果沒有安裝,會自動為您安裝Docker社區版。

        • 構建配置:按需提供構建準備命令。

          本文僅提供一個構建部署指令碼樣本,執行該樣本會先安裝了Maven,然後打JAR包,JAR包會放在target目錄下。您可按需將該樣本更換適合自己專案的指令碼。

          構建指令碼樣本(Alibaba Cloud Linux 3)

          ### sample build script
          set -e
          yum install -y maven-3.5.4
          mvn package

          構建指令碼樣本(Ubuntu)

          ### sample build script
          set -e
          yum install -y maven
          mvn package

          構建指令碼樣本(CentOS)

          ### sample build script
          set -e
          apt install -y maven
          mvn package
      2. 提供打包路徑和構建物名稱(即要打成的壓縮包名稱)。

        以下樣本表示指定打包路徑為target/,OOS會將軟體包檔案夾壓縮為一個.tgz檔案。

        構建物.png

    3. 上傳構建物到OSS。

      您可指定想要上傳到的OSS bucket和Bucket裡的目錄。

      goujianwu --oos.png

      任務輸出(可選)地區,添加bucketName(OSS bucket的名稱)和objectName(構建物在bucket內的完整路徑,目錄+構建物名稱)參數作為輸出內容,以供後續任務使用。後續任務可直接引用這些輸出,無需重新填寫。

    4. 批量在多台Linux系統的ECS上部署軟體包。

      目標ECS.png

      • 要部署到的目標ECS:這裡您可以選擇多個ECS批量部署。

      • OSS的資訊:提供構建物所在OSS的資訊。其中,OSS bucket名稱和OSS object名稱已預設引用上一步的輸出,無需重複填寫。同時,需要指定軟體包下載到的路徑,這裡預設下載到/home/admin/app/

      • 部署指令碼:您可以根據自己實際專案提供部署指令碼。

        本模板提供的樣本是先把.tgz壓縮包解壓到指定路徑,然後使用java -jar命令運行我們打的JAR包,並指定連接埠為8080。

    5. 可選)設定任務的並發控制參數,控制批量部署到多台ECS的並發速率。

    6. 單擊建立模板

執行模板

  1. 登入CloudOps Orchestration Service控制台。

  2. 在左側導覽列,選擇自動化任務 > 自訂工作範本

  3. 自訂工作範本頁面,找到已建立的模板,單擊對應操作列下的建立執行

  4. 基本資料階段,配置相應參數,單擊下一步:設定參數

  5. 設定參數階段,如果沒有可配置的參數,直接單擊下一步:確定

  6. 單擊建立

    在任務執行管理頁面,執行狀態顯示為成功時,表示模板執行任務已完成。

    執行模板結果-zh.png

  7. 登入Elastic Compute Service控制台

  8. 找到部署的目標ECS執行個體並遠端連線該執行個體。

    具體操作,請參見使用Workbench工具以SSH協議登入Linux執行個體

  9. 執行以下命令,確認本地構建部署是否成功。

    curl http://localhost:8080/hello

    看到返回欄位,即表明部署成功。image

    說明

    如果結果顯示Failed to connect to localhost port 8080:Connection refused,很可能是您的ECS未安裝Java導致,請執行yum install java命令後再次驗證。

後續使用

後續如果您的代碼有更新,您只需把程式碼推送到相應Git倉庫,然後重新執行該CI/CD模板,該流水線會為您拉取最新代碼,重新打包並推送至OSSObject Storage Service。然後,最新版本的軟體包會被批量的部署到您指定的多台ECS上。當然,如果您需要調整模板,也可以更新模板後再重新執行。