GitHub を使用してデータ アプリを自動的にデプロイ
TiDB Cloudは、 JSON 構文を使用してデータ アプリ構成全体をコードとして表すためのコードとしてのコンフィグレーション(CaC) アプローチを提供します。
データ アプリを GitHub に接続することにより、 TiDB CloudはCaC アプローチを使用して、データ アプリ構成を設定ファイルとして優先 GitHub リポジトリおよびブランチにプッシュできます。
GitHub 接続で自動同期とデプロイが有効になっている場合は、GitHub 上の構成ファイルを更新してデータ アプリを変更することもできます。構成ファイルの変更を GitHub にプッシュすると、新しい構成がTiDB Cloudに自動的にデプロイされます。
このドキュメントでは、GitHub を使用してデータ アプリを自動的にデプロイする方法と、GitHub 接続を管理する方法を紹介します。
あなたが始める前に
データ アプリを GitHub に接続する前に、次のものが揃っていることを確認してください。
- GitHub アカウント。
- ターゲット ブランチを含む GitHub リポジトリ。
注記:
GitHub リポジトリは、データ アプリを接続した後にデータアプリ構成ファイルを保存するために使用されます。構成ファイル内の情報 (クラスター ID やエンドポイント URL など) が機密である場合は、パブリック リポジトリではなくプライベート リポジトリを必ず使用してください。
ステップ 1. データ アプリを GitHub に接続する
アプリを作成するときに、データ アプリを GitHub に接続できます。詳細については、 データアプリを作成するを参照してください。
アプリの作成時に GitHub 接続を有効にしなかった場合でも、次のようにして有効にすることができます。
プロジェクトのデータサービスページに移動します。
左側のペインで、ターゲット データ アプリの名前をクリックして詳細を表示します。
[設定]タブの[GitHub に接続]領域で[接続] をクリックします。接続設定のダイアログボックスが表示されます。
ダイアログ ボックスで、次の手順を実行します。
[GitHub にインストール] をクリックし、画面上の指示に従ってTiDB Cloud Data Serviceをアプリケーションとしてターゲット リポジトリにインストールします。
「承認」をクリックして、GitHub 上のアプリケーションへのアクセスを承認します。
データ アプリの構成ファイルを保存するターゲット リポジトリ、ブランチ、ディレクトリを指定します。
注記:
- ディレクトリはスラッシュ (
/
) で始まる必要があります。たとえば、/mydata
。指定したディレクトリがターゲット リポジトリおよびブランチに存在しない場合は、自動的に作成されます。 - リポジトリ、ブランチ、ディレクトリの組み合わせによって構成ファイルのパスが識別されます。このパスはデータ アプリ間で一意である必要があります。指定したパスがすでに別のデータ アプリで使用されている場合は、代わりに新しいパスを指定する必要があります。そうしないと、現在のデータ アプリのTiDB Cloudコンソールで構成されたエンドポイントによって、指定したパス内のファイルが上書きされます。
- 指定したパスに別のデータ アプリからコピーされた構成ファイルが含まれており、これらのファイルを現在のデータ アプリにインポートする場合は、 既存のデータ アプリの構成をインポートするを参照してください。
- ディレクトリはスラッシュ (
TiDB Cloudコンソールまたは GitHub で行われたデータ アプリの変更が相互に同期されるようにするには、 [自動同期とデプロイメントの構成]を有効にします。
- これを有効にすると、指定した GitHub ディレクトリで行われた変更をTiDB Cloudに自動的にデプロイでき、 TiDB Cloudコンソールで行われた変更も同様に GitHub にプッシュできます。データ アプリのデプロイ履歴で、対応するデプロイとコミットの情報を見つけることができます。
- これを無効にすると、指定した GitHub ディレクトリで行われた変更はTiDB Cloudにデプロイされず、 TiDB Cloudコンソールで行われた変更も GitHub にプッシュされません。
[接続の確認]をクリックします。
ステップ 2. データ アプリ構成を GitHub と同期する
データアプリを作成するのときに GitHub 接続が有効になっている場合、 TiDB Cloud はアプリの作成直後にこのデータ アプリの構成ファイルを GitHub にプッシュします。
アプリの作成後に GitHub 接続が有効になっている場合は、デプロイ操作を実行してデータ アプリの構成を GitHub と同期する必要があります。たとえば、 [デプロイメント]タブをクリックして、このデータ アプリのデプロイメントを再デプロイできます。
デプロイメント操作後、指定した GitHub ディレクトリを確認してください。データ アプリ構成ファイルがtidb-cloud-data-service
によってディレクトリにコミットされたことがわかります。これは、データ アプリが GitHub に正常に接続されていることを意味します。ディレクトリ構造は次のとおりです。
├── <Your Data App directory on GitHub>
│ ├── data_sources
│ │ └── cluster.json # specifies the linked clusters.
│ ├── dataapp_config.json # specifies the Data APP ID, name, type, version, and description.
│ ├── http_endpoints
│ │ ├── config.json # specifies the endpoints.
│ │ └── sql # contains SQL files of the endpoints.
│ │ ├── <method>-<endpoint-path1>.sql
│ │ ├── <method>-<endpoint-path2>.sql
│ │ └── <method>-<endpoint-path3>.sql
ステップ 3. データ アプリを変更する
自動同期とデプロイメントが有効になっている場合、GitHub またはTiDB Cloudコンソールを使用してデータ アプリを変更できます。
注記:
GitHub とTiDB Cloudコンソールでデータ アプリを同時に変更した場合、競合を解決するには、コンソールで加えた変更を破棄するか、コンソールの変更で GitHub の変更を上書きするかを選択できます。
オプション 1: GitHub 上のファイルを更新してデータ アプリを変更する
構成ファイルを更新するときは、次の点に注意してください。
ファイルディレクトリ | ノート |
---|---|
data_source/cluster.json | このファイルを更新するときは、リンクされたクラスターにアクセスできることを確認してください。クラスター ID はクラスター URL から取得できます。たとえば、クラスター URL がhttps://tidbcloud.com/console/clusters/1234567891234567890/overview の場合、クラスター ID は1234567891234567890 です。 |
http_endpoints/config.json | エンドポイントを変更するときは、必ずHTTPエンドポイント構成で説明されているルールに従ってください。 |
http_endpoints/sql/method-<endpoint-path>.sql | http_endpoints/sql ディレクトリ内の SQL ファイルを追加または削除するには、対応するエンドポイント構成も更新する必要があります。 |
datapp_config.json | dataapp_config.json ファイルが別のデータ アプリからコピーされ、現在のデータ アプリの ID に更新する場合を除き、このファイルのapp_id フィールドは変更しないでください。そうしないと、この変更によってトリガーされる展開は失敗します。 |
これらのファイルのフィールド構成の詳細については、 データアプリ構成ファイルを参照してください。
ファイルの変更がコミットされてプッシュされると、 TiDB Cloud は最新の変更を含むデータ アプリを GitHub に自動的にデプロイします。デプロイメント履歴でデプロイメントのステータスとコミット情報を表示できます。
オプション 2: TiDB Cloudコンソールでデータ アプリを変更する
TiDB CloudコンソールでData App エンドポイントの変更を実行した後 (エンドポイントの変更など)、次のように変更を確認して GitHub にデプロイできます。
右上隅にある「デプロイ」をクリックします。加えた変更を確認するためのダイアログが表示されます。
レビューに応じて、次のいずれかを実行します。
- 現在のドラフトに基づいてさらに変更を加えたい場合は、このダイアログを閉じて変更を加えます。
- 現在の変更を最後のデプロイメントに戻す場合は、 「ドラフトを破棄」をクリックします。
- 現在の変更に問題がない場合は、変更の説明 (オプション) を入力し、 [デプロイ and Push to GitHub]をクリックします。導入ステータスは上部のバナーに表示されます。
デプロイメントが成功すると、 TiDB Cloudコンソールで行われた変更が自動的に GitHub にプッシュされます。
既存のデータ アプリの構成をインポートする
既存のデータ アプリの構成を新しいデータ アプリにインポートするには、次の手順を実行します。
既存のデータ アプリの構成ファイルを GitHub 上の新しいブランチまたはディレクトリにコピーします。
プロジェクトのデータサービスページで、GitHub に接続せずに新しいデータアプリを作成する 。
新しいデータ アプリを GitHub に接続する (自動同期と展開が有効)。新しいデータ アプリのターゲット リポジトリ、ブランチ、ディレクトリを指定するときは、コピーした構成ファイルを含む新しいパスを使用します。
新しいデータ アプリの ID と名前を取得します。左側のペインで新しいデータ アプリの名前をクリックし、右側のペインのデータ アプリのプロパティ領域でアプリ ID と名前を取得できます。
GitHub 上の新しいパスで、
datapp_config.json
ファイルのapp_id
とapp_name
を取得した ID と名前に更新し、変更をプッシュします。ファイルの変更が GitHub にプッシュされると、 TiDB Cloud は最新の変更を含む新しいデータ アプリを自動的にデプロイします。
GitHub からインポートされた構成を表示するには、 TiDB Cloudコンソールの Web ページを更新します。
デプロイメント履歴でデプロイメントのステータスとコミット情報を表示することもできます。
GitHub接続を編集する
データ アプリの GitHub 接続を編集する場合 (リポジトリ、ブランチ、ディレクトリの切り替えなど)、次の手順を実行します。
プロジェクトのデータサービスページに移動します。
左側のペインで、ターゲット データ アプリの名前をクリックして詳細を表示します。
「GitHub に接続」領域で、 をクリックします。 。接続設定のダイアログボックスが表示されます。
ダイアログ ボックスで、データ アプリのリポジトリ、ブランチ、ディレクトリを変更します。
注記:
- ディレクトリはスラッシュ (
/
) で始まる必要があります。たとえば、/mydata
。指定したディレクトリがターゲット リポジトリおよびブランチに存在しない場合は、自動的に作成されます。 - リポジトリ、ブランチ、ディレクトリの組み合わせによって構成ファイルのパスが識別されます。このパスはデータ アプリ間で一意である必要があります。指定したパスがすでに別のデータ アプリで使用されている場合は、代わりに新しいパスを指定する必要があります。そうしないと、現在のデータ アプリのTiDB Cloudコンソールで構成されたエンドポイントによって、指定したパス内のファイルが上書きされます。
- 指定したパスに別のデータ アプリからコピーされた構成ファイルが含まれており、これらのファイルを現在のデータ アプリにインポートする場合は、 既存のデータ アプリの構成をインポートするを参照してください。
- ディレクトリはスラッシュ (
TiDB Cloudコンソールまたは GitHub で行われたデータ アプリの変更が相互に同期されるようにするには、 [自動同期とデプロイメントの構成]を有効にします。
- これを有効にすると、指定した GitHub ディレクトリで行われた変更を自動的にTiDB Cloudにデプロイでき、 TiDB Cloudコンソールで行われた変更も同様に GitHub にプッシュできます。データ アプリのデプロイ履歴で、対応するデプロイとコミットの情報を見つけることができます。
- これを無効にすると、指定した GitHub ディレクトリで行われた変更はTiDB Cloudにデプロイされず、 TiDB Cloudコンソールで行われた変更も GitHub にプッシュされません。
[接続の確認]をクリックします。
GitHub 接続を削除する
データ アプリを GitHub に接続したくない場合は、次の手順を実行します。
- プロジェクトのデータサービスページに移動します。
- 左側のペインで、ターゲット データ アプリの名前をクリックして詳細を表示します。
- [設定]タブの[GitHub に接続]領域で[切断]をクリックします。
- 「切断」をクリックして切断を確認します。
切断操作後、データ アプリ構成ファイルは GitHub ディレクトリに残りますが、 tidb-cloud-data-service
によって同期されなくなります。