🔥

TiDB Serverless のBranchとGitHub統合

2024/08/07に公開

https://zenn.dev/kameping/articles/76adff1c3aee18
こちらの記事でTiDB Serverless の Branch 機能についてまとめました。Branch機能にはGitHub統合の機能が準備されています。TiDB Serverless クラスターに接続するアプリケーションを更新したタイミング(プルリクエストのタイミング)で自動でBranchが構築されるようです。
https://docs.pingcap.com/tidbcloud/branch-github-integration

さっそくやってみる

まずTiDB Cloudのマネージメントコンソールにログインしているブラウザの別タブでGitHubにログインしておきます。
左ペインのBranchesから、右上のConnect to GitHubをクリックします。

Install Other Accountを選択します。

別タブでGitHubが起動しますので、テスト用に使うレポジトリを選択してInstallボタンをクリックします。

先ほど起動した別タブのGitHub画面を閉じ、再度TiDB側のタブを操作すると以下の通りレポジトリが選択可能となっています。


右上がDisconnectになれば接続できています。

Pull Request の実行

BranchはPull Requestが発行された時点で自動で作成されます。つまりマージ前にBranchでテストが自動で可能になるということです。
作成したばかりのGitHubレポジトリでPull Requestを発行する最も簡単な方法はファイルをアップロードすることです。
レポジトリのトップ画面でAdd fileをクリックします。

Upload filesを選んで適当なファイルをアップロードします。

Commitを行わずに2つ目のラジオボタンを選択し、Propose changesをクリックします。

次の画面でCreate pull requestをクリックします。

TiDB CloudのマネージメントコンソールでBranchの構築が開始されたことがわかります。

${github_branch_name}_${pr_id}_${commit_sha}の命名法則でBranchは自動で命名されています。

Pull Request のMergeかClose

次に先ほど作成されたPull Request をMergeするか、Closeします。

そうするとBranchが自動で消えます。

複数の Pull Request

上記で作成したPull Request をオープンのまま新しい別のPull Request を作成すると以下のように複数のBranchが作成されます。

以下の通りGitHub側でApplicationとして登録されているTiDBモジュールがPull Request作成毎にBranchを作っていることがわかります。

作成されるBranchはBranch毎の固有のユーザーIDでログインする必要があります。

steps:
  - name: Wait for TiDB Serverless branch to be ready
    uses: tidbcloud/wait-for-tidbcloud-branch@v0
    id: wait-for-branch
    with:
      token: ${{ secrets.GITHUB_TOKEN }}
      public-key: ${{ secrets.TIDB_CLOUD_API_PUBLIC_KEY }}
      private-key: ${{ secrets.TIDB_CLOUD_API_PRIVATE_KEY }}

  - name: Test with TiDB Serverless branch
     run: |
        echo "The host is ${{ steps.wait-for-branch.outputs.host }}"
        echo "The user is ${{ steps.wait-for-branch.outputs.user }}"
        echo "The password is ${{ steps.wait-for-branch.outputs.password }}"

をレポジトリのルートに配置しておくことでGitHub Actionと連携して作成されたBranchのログイン情報を入手することが可能です。
https://docs.pingcap.com/tidbcloud/branch-github-integration
gormを利用したデモが準備されていますので簡単に試せます。
https://github.com/shiyuhang0/branching-gorm-example

Discussion