すべてのプロダクト
Search
ドキュメントセンター

CloudOps Orchestration Service:Git デプロイメント

最終更新日:Mar 01, 2026

このデプロイメントタイプを使用して、ソースファイルが Git リポジトリに保存されているアプリケーションを公開します。

仕組み

重要
  • Auto Scaling (ESS) グループであるアプリケーショングループにデプロイする場合、デプロイメント中にスケーリングアクティビティは一時停止されます。デプロイメントが成功したか失敗したかに関わらず、デプロイメントの完了後に自動的に再開されます。

  • デプロイメントプロセスは、停止・起動の原則に従います。各デプロイメントでは、まず停止スクリプトが実行され、次に起動スクリプトが実行されます。

  1. デプロイメントの作成と公開

    デプロイメントのために、アプリケーションソースファイルの情報、起動スクリプト、および停止スクリプトを設定します。

    リリースタスクを作成し、リリースモードを選択し、ターゲットのアプリケーショングループにデプロイメントを公開します。

  2. 公開タスクの自動デプロイメントプロセス

    1. デプロイメント情報を取得します。これには、Git リポジトリの情報とアプリケーションの起動・停止スクリプトが含まれます。

    2. コードをプルします。コードは、指定されたブランチから作業ディレクトリ内の code_deploy_application フォルダにプルされます。

    3. 停止スクリプトを実行します。アプリケーション停止スクリプトが実行され、古いバージョンのアプリケーションが停止されます。

    4. 起動スクリプトを実行します。アプリケーション起動スクリプトが実行され、新しいバージョンのアプリケーションが起動されます。

適用範囲

  • デプロイメントは Linux インスタンスでのみサポートされています。

  • 起動スクリプトと停止スクリプトでは、シェルスクリプトのみがサポートされています。

操作手順

  1. アプリケーションを作成し、ECS インスタンスをインポートします。

    1. Elastic Compute Service (ECS) インスタンスをお持ちでない場合は、ECS コンソール - カスタム起動ページに移動します。Linux オペレーティングシステムを実行し、インターネットにアクセスできる ECS インスタンスを作成します。

      Alibaba Cloud Linux 3.2104 LTS 64 ビットや Ubuntu 22.04 64 ビットなどの ECS イメージを選択します。以下の例のスクリプトは、これら 2 つのイメージ用に記述されています。異なるイメージを使用する場合は、これらの例に基づいてスクリプトを修正する必要があります。
    2. ECS コンソール - アプリケーション管理ページに移動し、[既存のリソースから作成] をクリックします。アプリケーションとアプリケーショングループを作成し、ECS インスタンスをアプリケーショングループにインポートします。

  2. デプロイメントを作成します。

    1. 次のサンプルコードを個人の Git リポジトリにフォークします。

      個人の Gitee または GitHub アカウントが必要です。インスタンスが中国本土にある場合は、Gitee を使用してください。
    2. ECS コンソール - アプリケーション管理 ページに移動します。[マイアプリケーション] タブで、対象のアプリケーションの名前をクリックします。

    3. アプリケーション詳細ページで、[デプロイメント] タブを選択し、[デプロイメントの作成] をクリックします。

    4. [デプロイメントの作成] ページで、[RevisionType][Git リポジトリコード] に設定し、パラメーターを設定してから [OK] をクリックします。

      • Git リポジトリ情報:コードが含まれる Git リポジトリの情報を設定します。

        この機能を初めて使用する場合は、コンソールのプロンプトに従って、Git リポジトリのワンクリック権限付与を完了してください。
      • 作業ディレクトリ:アプリケーションの起動スクリプトと停止スクリプトが実行されるディレクトリです。例:/root/deploy。デフォルトでは、コードはこのディレクトリ内の code_deploy_application フォルダにプルされます。

      • アプリケーション起動スクリプト

        Alibaba Cloud Linux

        ### 注:Git リポジトリのコードは、作業ディレクトリ内の code_deploy_application フォルダに自動的にダウンロードされます。パスは {作業ディレクトリ}/code_deploy_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 です。
        
        ### 現在のバージョンのアプリケーションを起動します。
        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_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. デプロイメントリストに戻ります。作成したデプロイメントを見つけて [公開] をクリックします。表示されるダイアログボックスで、ターゲットグループを選択し、[OK] をクリックしてデプロイメントを開始します。

  4. 結果を検証します。

    1. ターゲットインスタンスの詳細ページに移動します。[接続] をクリックし、[ワークベンチ] を選択します。ページのプロンプトに従ってターミナルにログインします。

    2. curl http://localhost:8080/hello コマンドを実行します。Alibaba Spring Sample! が返された場合、デプロイメントは成功です。

主要パラメーター

フィールド

説明

プラットフォーム

コードが配置されている Git リポジトリプラットフォームを選択します。

オーナー

Git リポジトリを所有するアカウントを選択します。初めて使用する際に権限付与を行います。

組織

個人リポジトリまたは組織リポジトリを選択します。

リポジトリ

コードが配置されているリポジトリを選択します。

ブランチ

デプロイするブランチを選択します。

CommitId

値を入力する必要はありません。ブランチを選択すると、システムが自動的に最新の CommitId を取得します。

作業ディレクトリ

アプリケーションの起動スクリプトと停止スクリプトの作業ディレクトリです。

  • 絶対パスを入力します。

  • コードは、作業ディレクトリ内の code_deploy_application フォルダに自動的にプルされます。

  • 存在しないディレクトリを指定できます。実行中に自動的に作成されます。

アプリケーション起動スクリプト

アプリケーションを起動するために使用されるシェルスクリプトです。

アプリケーション停止スクリプト

アプリケーションを停止するためのシェルスクリプトです。
このスクリプトは、現在および以前のバージョンのアプリケーションを正しく停止する必要があります。アプリケーションが実行されていない場合でも、スクリプトはエラーなしで正常に終了する必要があります。

たとえば、次のスクリプトは 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