Flow パイプラインから パブリックホスト、 へアーティファクトをデプロイします。このガイドでは、ホストの接続、デプロイジョブの作成、設定、およびロールバックについて説明します。
ワークフロー
新規ホストの接続:ホストグループを作成し、ホストを追加します。
ホストデプロイジョブの追加:パイプラインにデプロイジョブを作成または追加します。
ホストデプロイジョブの設定:デプロイパラメーターを設定します。
ホストの接続
Flow のホームページで、[Global Settings] > [Host Group Management] をクリックします。
[Host Group Management] ページで、ホストグループを選択し、[Add New Host] をクリックします。Flow は、以下の接続方法をサポートしています。
ホストグループが存在しない場合は、まずホストグループを作成してください。
ランナーの手動インストール
説明この方法は、Alibaba Cloud ECS インスタンスや Alibaba Cloud 以外のホストを含む、すべてのホストタイプで利用できます。
[Add New Host] ページで、接続方法として [Manually Install Runner] を選択します。
[Connect Host] セクションで、[Operating System Type] に [Linux] を選択し、ランナーのインストールコマンドをコピーして、ターゲットホストで実行します。ホストはパブリックネットワークにアクセスできる必要があります。このコマンドには一時的なパラメーター (ランナーのバージョン、トークン、AccessKey) が含まれており、一定時間後に失効します。コマンドが完了したら、[I Understand] をクリックします。
以下のターミナル出力は、接続が成功したことを示します。
INFO[2025-04-29T13:34:12+08:00] service type linux-systemd, user , realUser root INFO[2025-04-29T13:34:12+08:00] Aliyun yunxiao runner-v0.3.1-be-d5zh**** service started INFO[2025-04-29T13:34:12+08:00] Aliyun yunxiao runner-v0.3.1-be-d5zh**** service status runningランナーがインストールされると、ホストは自動的に現在のホストグループに追加されます。ホストリストを更新して確認してください。
Alibaba Cloud 以外のホストへのデプロイ
Flow を使用して、独自のホスト (Alibaba Cloud 以外) にアプリケーションをデプロイできます。エンタープライズ版は必要ありません。
Alibaba Cloud 以外のホストにデプロイするには:
前述の [Manually Install Runner] の方法を使用して、ターゲットホストにランナーをインストールします。
パイプラインを作成する際に、[Java・テスト、ビルド、Alibaba Cloud ECS/独自ホストへのデプロイ] テンプレートなど、ホストデプロイをサポートするテンプレートを選択します。
説明[Execute Shell] ステップは、ホストへのパスワードなし接続をサポートしていません。認証情報を入力せずにリモートホストでコマンドを実行するには、[VM Deploy] ステップと事前にインストールされたランナーを使用してください。
ホストデプロイジョブの追加
以下のいずれかの方法でホストデプロイジョブを追加できます。
テンプレートから
パイプラインを作成する際に、言語と [VM Deploy] ジョブを含むテンプレートを選択します。
たとえば、言語として [Java] を選択し、次に [Java・テスト、ビルド、Alibaba Cloud ECS/独自ホストへのデプロイ] テンプレートを選択します。
パイプラインへの追加
既存のパイプラインで、[New Task] をクリックし、[VM Deploy] を選択します。
複数環境およびマルチリージョンデプロイ
リージョン間のデプロイ
単一のパイプラインで異なるリージョン (例:米国と日本) のホストにデプロイするには、各リージョンごとに個別のホストグループを作成します。パイプライン内の各ホストグループに対して [VM Deploy] ジョブを追加します。
複数のマイクロサービスのオーケストレーション
複数のマイクロサービスを複数のホストにデプロイするには、各サービスごとに個別のビルドおよびデプロイジョブを持つ単一のパイプラインを使用するか、独立したメンテナンスのためにサービスごとに個別のパイプラインを作成します。ホストごとに個別のパイプラインは必要ありません。ホストグループ内で並列デプロイを設定します。
ランタイムでのデプロイ環境の選択
Flow は、パイプライン実行中にデプロイ環境を動的に選択することをサポートしていません。デプロイ先の環境を制御するには:
各環境 (例:ステージングと本番) ごとに個別のホストグループを作成します。
パイプライン内の各ホストグループに対して [VM Deploy] ジョブを追加します。
実行フローを制御するために、デプロイジョブの間に [Manual Confirmation] ノードを挿入します。
適切なデプロイコンポーネントの選択
ECS インスタンスにデプロイする場合、[ECS Application] コンポーネントの代わりに [VM Deploy] コンポーネントを使用します。[VM Deploy] コンポーネントはランナーエージェントを介してホストに接続し、ホストインスタンスと正しく関連付けられます。
ホストデプロイジョブの設定
このセクションでは、Java サンプルコードプロジェクトを使用して設定方法を説明します。テストおよびビルドステージについては、「テストとビルド」をご参照ください。アーティファクトをアップロードする際は、リポジトリから deploy.sh ファイルを含めてください。
[Download Artifacts During Deployment] を選択します。このオプションはデフォルトで選択されています。
[Artifact Name] を選択します。
デプロイ先のホストグループを選択します。新規に作成する場合は、[New Host Group] をクリックします (ホストグループ管理)。
重要ホストグループは、デプロイリソースと設定を管理します。グループ内のすべてのホストには Java ランタイム環境が必要です。
[Deployment Configuration] パラメーターを指定します。
パラメーター
説明
ダウンロードパス
アーティファクトがダウンロードされるホスト上のパスです。
実行ユーザー
デプロイコマンドを実行するユーザーアカウントです (例:root)。
デプロイスクリプト
この例では、デプロイスクリプトはパッケージを展開して実行します。
mkdir -p /home/admin/application tar zxvf /home/admin/app/package.tgz -C /home/admin/application/ sh /home/admin/application/deploy.sh restartdeploy.sh は JAR パッケージを起動するシェルスクリプトです。本番環境では、独自のデプロイスクリプトに置き換えてください。
重要デプロイ中、Flow は
rdc_deploy_command_で始まる名前のプロセスを起動します。デプロイスクリプトでこれらのプロセスを操作しないでください。操作するとデプロイが失敗する可能性があります。[Deployment Strategy] を設定します。
一度に複数のホストにデプロイするには、バッチリリースを使用します。ホストデプロイジョブでデプロイ戦略を指定します。たとえば、4 台のホストと 2 つのバッチがある場合、Flow はバッチごとに 2 台のホストにデプロイします。
一時停止戦略
説明
最初のバッチで一時停止
最初のバッチが完了した後、結果を検証します。[Continue] をクリックして後続のバッチをデプロイします。
一時停止なし
すべてのバッチが一時停止することなく自動的にデプロイされます。
各バッチで一時停止
次のバッチを開始する前に、各バッチで手動の承認が必要です。
バッチ数:デプロイバッチの総数です。ホストは指定された数のバッチに分割されます。
デプロイで環境変数を使用するには、「環境変数」をご参照ください。
完全な設定については、上記のパラメーターの説明をご参照ください。
デプロイスクリプトの使用方法
[Deployment Script] フィールドはオプションです。空のままにすると、Flow はアーティファクトをホストにダウンロードするだけで、デプロイアクションは実行しません。エラーは報告されません。デプロイを完了するには、展開、設定、および起動ロジックをデプロイスクリプトに記述します。
インラインのデプロイスクリプトには文字数制限があります。スクリプトが制限を超える場合は、シェルスクリプトファイルを Git リポジトリまたはターゲットホストにアップロードし、[Deployment Script] フィールドで呼び出します。例:
sh /home/admin/deploy.sh単一ホストへの複数サービスの個別デプロイ
複数のサービスを同じホストにデプロイし、それらを個別にリリースしたい場合は、サービスごとに個別のホストグループを作成します。ホストグループには同じホストを含めることができます。パイプライン内の各ホストグループに対して個別のデプロイジョブを設定し、各デプロイを分離するために異なるダウンロードパスと起動スクリプトを指定します。
スクリプトの並列実行
単一のホストで複数のスクリプトを並列実行するには、[Download Artifacts During Deployment] を選択せずに、パイプラインに追加の [VM Deploy] コンポーネントを追加します。このコンポーネントにスクリプトコマンドを直接記述します。異なる [VM Deploy] コンポーネントのスクリプトは、メインのデプロイと並行して実行されます。
デプロイメカニズムとアーティファクト転送
アーティファクトの完全ダウンロード
各ホストデプロイでは、完全なアーティファクトパッケージがダウンロードされます。増分更新はサポートされていません。
ビルドステージとデプロイステージ
ビルド設定の「インストール」ステップは、JDK や Maven などの依存関係をホストではなく Flow ビルドクラスターにインストールします。「アーティファクトのアップロード」ステップは、ファイルをパッケージ化してアーティファクトリポジトリにアップロードします。アーティファクトは、デプロイステージ中にのみホストにダウンロードされます。
静的リソースのホストへのデプロイ
HTML またはその他の静的ファイルをホストにデプロイするには:
ビルドステージで、ソースファイルをアーティファクトにパッケージ化します。
デプロイスクリプトで、ファイルをターゲットディレクトリに展開します:
mkdir -p /home/admin/www/html tar zxvf /home/admin/app/package.tgz -C /home/admin/www/html/
カスタムディレクトリへのアーティファクトのデプロイ
JAR ファイルまたはその他のアーティファクトを /app/jar/zh のようなカスタムディレクトリにデプロイするには:
mkdir -p /app/jar/zh
tar zxvf /home/admin/app/package.tgz -C /app/jar/zh/
cd /app/jar/zh && sh start.sh起動スクリプトを事前にターゲットホストに配置することもできます。
Docker Compose を使用したデプロイ
Flow は、Docker Compose を使用したアプリケーションのデプロイをサポートしています。[Deployment Script] で docker-compose コマンドを実行します。
前提条件
デプロイ前に、ターゲットホストに Docker と Docker Compose がインストールされている必要があります。
docker-compose.yml ファイルの同期
パイプラインは、コードリポジトリからターゲットホストへ docker-compose.yml ファイルを自動的に転送しません。以下のいずれかの方法を使用して、ターゲットホストでファイルを利用できるようにします:
ビルドステージ中に
docker-compose.ymlファイルをビルドアーティファクトにパッケージ化します。ファイルはデプロイ中にアーティファクトと共にホストにダウンロードされます。デプロイスクリプトで
scp、wget、またはgit cloneを使用してファイルを転送します。
デプロイスクリプトの例:
cd /home/admin/app
tar zxvf package.tgz
docker-compose up -dPython またはその他のコードベースプロジェクトのデプロイ
Python や同様のプロジェクトの場合、ビルドステージ中にコードをアーティファクトリポジトリにアップロードし、デプロイ中にダウンロードして展開します。または、デプロイスクリプトで Git からコードをプルします。
デプロイジョブの管理
デプロイ詳細の表示
デプロイジョブを設定した後、パイプラインを実行します。デプロイ中に、[deployment details] をクリックしてステータスを表示します。パイプライン実行詳細ページで [VM Deploy] ジョブを見つけ、[deployment details] をクリックして詳細ページを開きます。
デプロイステータス | 説明 |
デプロイ中 | デプロイを [Stop] するか、ログを表示できます。 |
デプロイ待ち | 利用可能なアクションはありません。 |
成功 | デプロイログを表示できます。 |
失敗 | カードビューの [Retry] をクリックしてデプロイを再開します。デプロイログを表示するか、FAQ を参照してトラブルシューティングすることもできます。 |
スキップ済み | このデプロイジョブはスキップされました。 |
デプロイのロールバック
パイプラインの [Deployment History] で、ロールバックするデプロイを見つけ、[Roll Back] をクリックします。
ロールバックは、過去のアーティファクトとデプロイスクリプトを使用してデプロイを再実行します。これは、単純な状態の復元ではなく、以前のバージョンで新しいデプロイを実行することと同じです。過去のアーティファクトが利用できない場合、ロールバックはできません。
デプロイパッケージは 30 日間のみ保持されます。30 日より古いデプロイはロールバックできません。
デプロイ失敗のトラブルシューティング
デプロイ成功後にアプリケーションが実行されない
パイプラインがデプロイ成功を示しているにもかかわらず、アプリケーションがホスト上で実行されていない場合、最も可能性の高い原因はデプロイスクリプトに起動コマンドがないことです。ホストデプロイはアーティファクトを転送し、デプロイスクリプトを実行するだけです。アプリケーションを自動的に起動することはありません。デプロイスクリプトに、アーティファクトを展開してアプリケーションプロセスを起動するコマンドが含まれていることを確認してください。例:
tar zxvf /home/admin/app/package.tgz -C /home/admin/application/
sh /home/admin/application/deploy.sh restartデプロイ中の SLB トラフィックの管理
デプロイ中に Server Load Balancer (SLB) のトラフィックを削除および復元するには、デプロイスクリプトにトラフィック管理コマンドを追加します。ベストプラクティス:
単一のホストを含むホストグループを作成します。
デプロイスクリプト内で、SLB からホストを削除し、アプリケーションをデプロイし、デプロイを検証し、ホストを SLB に復元する、というステップを順番に追加します。
すべてのステップを同じホストグループで実行することで、トラフィックの削除と復元が異なるホストを対象とする場合に発生する不整合を防ぎます。