全部產品
Search
文件中心

CloudOps Orchestration Service:Git部署物

更新時間:Jan 20, 2026

當應用源檔案是儲存在Git倉庫中的代碼時,可以使用此種類型的部署物來發布應用。

工作原理

重要
  • 當發布的應用分組為ESS伸縮組時,部署期間伸縮活動會被暫停,部署結束後(無論成功或失敗)將自動回復。

  • 部署流程遵循先停後啟原則,即每次部署都會先執行停止指令碼,再執行啟動指令碼。

  1. 建立並發布部署物

    將應用源檔案資訊、啟動指令碼和停止指令碼配置為部署物。

    建立發布任務,選擇發布模式,將部署物發布至目標應用分組。

  2. 發布任務的自動化部署流程

    1. 擷取部署物資訊,包括Git倉庫的資訊和應用的啟動/停止指令碼。

    2. 拉取代碼:將指定分支的代碼拉取到工作目錄下的code_deploy_application檔案夾。

    3. 執行停止指令碼:執行應用停止指令碼,停止舊版本應用。

    4. 執行啟動指令碼:執行應用啟動指令碼,啟動新版本應用。

適用範圍

  • 僅支援部署到Linux執行個體。

  • 啟動和停止指令碼僅支援Shell類型的指令碼。

操作步驟

  1. 建立應用並匯入ECS執行個體。

    1. 如果沒有ECS執行個體,前往ECS控制台-自訂購買頁面,建立Linux作業系統的ECS執行個體並開通公網。

      建議ECS鏡像選擇Alibaba Cloud Linux 3.2104 LTS 64位或Ubuntu 22.04 64位。後續樣本中的指令碼基於這兩種鏡像編寫。如果使用其他鏡像,請參考樣本並根據實際情況修改指令碼。
    2. 前往ECS控制台-應用管理頁面,單擊匯入已有資源建立,建立應用和應用分組,並匯入ECS執行個體到應用分組。

  2. 建立部署物。

    1. 將以下範例程式碼Fork到個人的Git倉庫。

      需註冊個人Gitee或Github帳號。如果執行個體地區為中國內地建議使用Gitee。
    2. 前往ECS控制台-應用管理頁面,在我的應用程式頁簽下,單擊目標應用程式名稱。

    3. 在應用詳情頁,選擇部署物頁簽,然後單擊建立部署物

    4. 建立部署物頁面,部署物類型選擇Git倉庫代碼,設定參數後單擊確定儲存。

      • Git倉庫資訊:設定代碼所在Git倉庫的資訊。

        如果是第一次使用,需按照控制台提示完成Git倉庫一鍵授權。
      • 工作目錄:應用啟動/停止指令碼的執行目錄。樣本:/root/deploy。代碼預設拉取到該目錄下的code_deploy_application檔案夾。

      • 應用啟動指令碼

        Alibaba Cloud Linux

        ### 注意:Git倉庫代碼會自動下載到工作目錄下的code_deploy_application檔案夾,即 {工作目錄}/code_deploy_application
        ### Attention: The Git repository code will be automatically downloaded to the code_deploy_application folder under the working directory, i.e. {workingDir}/code_deploy_application
        
        ### 啟動目前的版本的應用
        ### Start the current version of the application            
        start_application() {
         cd ./code_deploy_application
         set -e
         yum install -y maven-3.5.4
         java -jar sample-spring-1.0-SNAPSHOT.jar &
        }
        
        start_application

        Ubuntu

        ### 注意:Git倉庫代碼會自動下載到工作目錄下的code_deploy_application檔案夾,即 {工作目錄}/code_deploy_application
        ### Attention: The Git repository code will be automatically downloaded to the code_deploy_application folder under the working directory, i.e. {workingDir}/code_deploy_application
        
        ### 啟動目前的版本的應用
        ### Start the current version of the application            
        start_application() {
         cd ./code_deploy_application
         set -e
         apt update
         apt install -y maven
         java -jar sample-spring-1.0-SNAPSHOT.jar &
        }
        
        start_application
      • 應用停止指令碼

        ### Stop the application (if any)
        stop_application() {
          PID=$(ps -ef | grep "sample-spring-1.0-SNAPSHOT.jar" | grep -v "grep" | awk '{print $2}')
          if [ -n "$PID" ]; then
            kill -9 $PID
          fi
        }
        
        stop_application
  3. 返回部署物列表,找到剛建立的部署物,單擊發布。選擇目標分組,單擊確定開始部署。

  4. 結果驗證。

    1. 進入目標執行個體詳情頁,單擊遠端連線,選擇通過Workbench遠端連線。根據頁面提示登入,進入終端頁面。

    2. 執行curl http://localhost:8080/hello命令。返回Alibaba Spring Sample!表示部署成功。

重要欄位

欄位

說明

平台

選擇代碼所在的Git倉庫平台。

所有者

選擇Git倉庫的所屬帳號。首次使用時需完成授權。

組織

選擇個人倉庫或者組織倉庫。

倉庫

選擇代碼所在倉庫。

分支

選擇要部署的分支。

CommitId

無需填寫。選擇分支後,系統將自動擷取最新的CommitId。

工作目錄

應用的啟動/停止指令碼的工作目錄。

  • 需填寫絕對路徑。

  • 代碼被自動拉取到工作目錄下的code_deploy_application檔案夾。

  • 可填寫不存在的目錄,執行期間會自動建立。

應用啟動指令碼

用於啟動應用的Shell指令碼。

應用停止指令碼

用於停止應用的Shell指令碼。
指令碼需要能夠正確停止當前及歷史版本的應用。當沒有應用在運行時,指令碼也應能正常退出且不報錯。

例如,以下指令碼可停止名為my-container的容器(假設每個版本的容器名都叫做my-container),且在容器不存在時不會報錯:

container_name="my-container"
container_id=$(docker ps -aq -f name=${container_name}) 
if [ -n "$container_id" ]; then
  docker rm -f $container_id
fi