
ThoughtSpot CS Toolsのgitについてご紹介します
ThoughtSpot CS Toolsの概要のご紹介のページはこちらとなります。
ThoughtSpotのCS Toolsは以下の機能があります。今回はこのうち「git」についてご説明します。
- archiver ・・・ プラットフォーム内の古い回答とライブボードを管理する
- bulk-deleter ・・・ プラットフォームからメタデータオブジェクトを一括削除する
- bulk-sharing ・・・ ブラウザ内でテーブルおよび列レベルのセキュリティをスケーラブルに管理する
- extractor ・・・ ワークシート、ビュー、またはテーブルからデータを抽出する
- git ・・・ 開発者にとって使いやすい方法でvsc/git APIエンドポイントを使用する
- scriptability ・・・ ThoughtSpot環境間でTMLをメンテナンスする
- searchable ・・・ ThoughtSpotでThoughtSpotメタデータを探索する
- usermanagement ・・・ ユーザーを一括管理する(現在ユーザー削除と所有オブジェクトの移転のみが行えます)
CS Tools「git」とは?
CS Toolsのgit機能は、GitHub連携機能を設定・運用するオプションです。これにより、ThoughtSpotの様々なオブジェクトのバージョンコントロールが可能となります。バージョンコントロールの詳細についてはドキュメント を参照ください。
GUIによるバージョン管理はこちらも参照願います。
全体(機能問わず)で共通のオプション
以下は、各機能共通のオプションになります(すべての機能で有効になるわけではないのでご注意ください)。
--config:コマンドの対象となるThoughtSpotのクラスタの接続先の設定ファイルを指定します。ほぼすべてのコマンドで必須です。
--temp-dir:一時ファイルが作成されるフォルダを指定します
--verbose:「cs_tools logs report」で出力することのできるログファイルについて、このオプションを設定するとより詳しいログを得ることが可能になります。
gitについて
CS Toolsのgit機能は、GitHub連携機能を設定するオプションです。GitHubに慣れていない方のために用語を少し解説します。
コミット(Commit):ThoughtSpotの各オブジェクトをGitHubに保存すること
デプロイ(Deploy):GitHubからThoughtSpiotにオブジェクトを復元すること
revert-commit:GitHubからThoughtSpiotにオブジェクトを復元すること
GUIのバージョンコントロール機能との違い
GUIからもバージョンコントロール機能として同じようなことが可能ですが、GUIからはライブボードと検索結果(Answer)のみ履歴管理が可能となっています。
GUIでは、ライブボードや検索結果を保存するたびに新しいバージョンとして履歴管理されるため、細かやかな履歴管理が可能となっています。
一方で、CS ToolsのGit機能は、ライブボードと検索結果(Answer)以外の様々なオブジェクト(例えばモデルなど)の履歴管理が可能となっています。ただし、細かく履歴管理を行うのは苦手で、コマンドを流したときのオブジェクトの保存ができるだけで、なにか変更を保存するたびに履歴が取れる、といったことはできません。
CS Toolsのgit機能の詳細
CS Toolsのgit機能の初期設定はconfigのcreateで行いますが、これは管理者メニューのバージョン・コントロールで設定できる項目と共通化されています。ただ、CS Toolsから設定を行おうとすると、「有効化」はできません。GUIにある「有効化」はあくまでライブボードと検索結果(Answer)の履歴管理のことなので、これが有効化されていなくともAPIやCS Toolsを用いたGitHub連携は可能です。
GitHubへコミットできる項目は、モデルやビューなどライブボードや検索結果以外にも様々なオブジェクトをコミットできるので、より広くバージョン管理(どちらかというとバックアップになるのかもしれませんが)したい場合はCS ToolsによるGit連携は非常に有用です。基本的には管理者側によるバックアップ的な位置づけが大きいように思います。
コミットを一度に複数のオブジェクトにした場合、デプロイする際はコミットしたときのオブジェクトすべてを書き戻すことになるので、細かくオブジェクト単位で管理するのは不得意なことに注意する必要があります。
本メニューはメニューが一段階深くなっています。2つのオプション(config、branches)の下にさらにメニューがあります。
- config・・・Git統合の設定に関する機能
- create・・・Git統合の設定を作成
- update・・・設定されているGit統合の設定を更新
- search・・・Git統合の設定を表示
- branches・・・GitHubを運用します(コミット、デプロイ、ブランチ統合の検証)
- commit・・・Gitにコミットします
- validate・・・ブランチを統合できるかどうか検証
- deploy・・・GitHubのリポジトリからThoughtSpotにデプロイ
- search-commits・・・メタデータIDからコミットIDを検索する(非推奨)
- revert-commit・・・コミットを元に戻す(非推奨)
configオプション
configオプションは、git統合の設定を作成、更新する機能です。さらにcreate、update、searchの3オプションに分かれています。
create
createオプションは、gitの設定を行うオプションです。
--repository-url:リポジトリのURLを設定します(必須項目)。対象リポジトリをブラウザで開いたときのURLとなります。
--username:GitHubのユーザー名を設定します(必須項目)
--access-token:上のユーザーで取得できるアクセストークンを設定します(必須項目)
--commit-branch:TMLを保存するためのコミット用のブランチを設定します(必須項目)
--config-branch:GUIDマッピングを行うための設定用のブランチを設定します(必須項目)
--org:ORGを指定します
以下がサンプルコマンドです。YOUR_REPOSITORY_URL、YOUR_GITHUB_USER_NAME、YOUR_GITHUB_ACCESS_TOKEN、YOUR_COMMIT_BRANCH_NAME、YOUR_CONFIG_BRANCH_NAME、などは環境に合わせて修正してください。
cs_tools tools git config create --repository-url YOUR_REPOSITORY_URL --username YOUR_GITHUB_USER_NAME --access-token YOUR_GITHUB_ACCESS_TOKEN --commit-branch YOUR_COMMIT_BRANCH_NAME --config-branch YOUR_CONFIG_BRANCH_NAME --config YOUR_SETTING_NAME
それぞれGitHubに対してどのような設定を行うかは、別の記事を御覧ください
上のコマンドを打ち込むことで、以下のように設定が完了します。

管理者メニューに入ってみると、確かに設定が完了しています。

ただし、スクショの通り「バージョン管理を有効にする」のところが「Disabled」になっています。どうやら管理者メニューの「バージョン管理を有効にする」はCS_Toolsではさわれないようなので、GUIから設定する必要があります。また、その際にGitHubのアクセストークンの入力を求められてしまいます。
ただし、「バージョン管理を有効にする」のところが「Disabled」でも、CS ToolsやAPIからはバージョン管理ができるので、あくまでこの管理画面の「バージョン管理を有効にする」というのは、UIメニューとしてバージョン管理メニューを出すか、出さないか、という設定なので気をつけていただければと思います。
update
updateオプションはcreateで設定しているオプションのうち、変更したい項目のみ指定すればオッケーです。
search
searchオプションは、すでに設定されている設定を表示する機能です。
--org:表示対象のOrgを指定します。
コマンド例:
cs_tools tools git config search --config mysetting
上記コマンドで以下の通り表示されます。

branchesオプション
branchesは、実際にGit連携を運用するための機能で、ThoughtSpotの該当のオブジェクトをgitの方にコミット(保存)したり、gitからThouhtSpot側に書き戻したりすることができます。このオプションには、commit、validate、deploy、search-commits、revert-commitの細かいオプションがあります。search-commits、revert-commitは非推奨になっているので、使いたい場合はAPIを直接使ってください。
commit
オブジェクトの名称や持ち主、タグに基づいて一気にコミットすることが可能です。コミットしただけでは、ThoughtSpotにてバージョン管理は無効のままですが、バージョン管理をオンにすると、GUIで過去にコミットした内容に戻ることが可能です。
--comment:コミットする際のコメントです(必須項目)
--delete-aware:GitHubレポジトリ内のコンテンツが、ThoughtSpot内にない場合、コンテンツを削除します
--log-errors:TMLエラーをコンソールに出力します
--org:対象となるORGを指定します。
--metadata-types:対象となるオブジェクトを指定します。CONNECTION、TABLE、VIEW、SQL_VIEW、MODEL、LIVEBOARD、ANSWERが対象として選択可能です(必須項目)
--pattern:オブジェクトの名称をパターンマッチングして対象とします。SQL的な書き方ができるため、%をワイルドカードとして利用可能です。
--authors:対象となるユーザ名を記載します。カンマ区切りで複数ユーザーの指定が可能です。
--tags:対象となるタグを記載します。こちらもカンマ区切りで複数タグの指定が可能です。
--include-system:このオプションを指定すると、組み込みの管理者アカウントのオブジェクトを含めます。
以下は、オブジェクトの持ち主が作成したすべてのANSWERをコミットするサンプルです。
cs_tools tools git branches commit --comment "CS TOOLSによるコミット" --delete-aware --log-errors --metadata-types ANSWER --authors akimasa-kajitani@kcme.jp --config mysetting2

GitHubを見ると、確かに無事にコミットできています。

validate
ブランチを統合できるかどうか検証する機能です。
--source-branch:統合元のブランチ(必須項目)
--target-branch:統合先のブランチ(必須項目)
--org:対象となるorg
以下は、空っぽのBranchを作成し(Branchの作成はGitHub上で手動で行っています)、そこにもとのBranchを統合できるかどうかを試しています。
cs_tools tools git branches validate --source-branch commit --target-branch commit2 --config mysetting2
実行すると、以下のようにメッセージが出ます。今回はターゲットが空っぽだったので当然統合可能、ということになります。

実際のブランチのマージはGit側で操作する必要があるので、ご注意ください。本APIはあくまで検証のみとなります。
deploy
GitHubのリポジトリからThoughtSpotにデプロイする機能です。
--branch:対象ブランチの名称を指定します(必須項目)
--commit-id:デプロイ対象のcommitのIDを指定します。commit IDはGitHubから取得する必要がありますが、非常にわかりにくいところにあるので要注意です。commit IDの見方は後述します。
--tags:対象となるタグを記載します。こちらもカンマ区切りで複数タグの指定が可能です。
--org:対象となるORGを指定します。
--log-errors:TMLエラーをコンソールに出力します
以下のコマンドは、commitというブランチの、コミットIDが「d260075d38247cc1db1f9765c23d37d8de63d080」のものをThoughtSpot側に書き戻すコマンドです。
cs_tools tools git branches deploy --branch commit --commit-id d260075d38247cc1db1f9765c23d37d8de63d080 --org YOUR_ORG --log-errors --config mysetting2
スクショは上のコマンドの結果とは異なりますが、以下のようにThoughtSpot側に書き戻されます。コミット後に更新したものが強制的に上書きされるので、Deployするときは気をつけてください。

commit IDの探し方:
commit IDは、GitHubにて確認しますが、書き戻したいオブジェクトがあるブランチを選択し、下記スクショの赤色の部分がcommit IDの頭数桁分となります。

これをクリックすると、何が変化したか、というのを確認する画面になりますが、ここでコピーボタンをクリックすると、commit IDが取得できます。

search-commits
メタデータのID(各オブジェクトのID)からGitHubのコミットIDを検索する機能ですが、この機能は廃止となっています。実行時のメッセージからはUIから行うように、とのことです。以下は実行結果です。

APIとして「/api/rest/2.0/vcs/git/commits/search」があるので、APIを直接使ってみてください。
revert-commit
GitHubのコミットIDの状態へ戻しますが、こちらもUIから行うようにとのことで、非推奨となっています。
cs_tools tools git branches revert-commit --commit-id 02403fc8b82faa8e0333d426ac62f861519745b5 --config mysetting2
以下実行結果です。

APIとして「/api/rest/2.0/vcs/git/commits/{commit_id}/revert」があるので、APIを直接使ってみてください。
※2025/11/28時点の情報です
運営会社

