ワークスペース
Qmonus SDKでは、プラグインの定義空間としてワークスペースを管理します。ワークスペースは各種プラグインの定義ファイルが格納されるディレクトリのようなものです。
ワークスペースは、ローカルディスクモード
とgithub連携モード
の2つが提供されています。
またワークスペースは開発環境でのみ存在する概念であることから起動パラメータの--developer_mode=True
の場合のみ動作します。
ローカルディスクモード
ワークスペースは、ローカルディスク上に作成されます。ローカルディスクモード
では、プラグインを登録するとワークスペース定義時に指定したディレクトリにプラグインリソースタイプを識別するディレクトリが生成され、その配下にプラグインの定義ファイルが保存されます。開発者は、保存されたローカルディスク上のファイルを自身でコードリポジトリにプッシュすることでコードを管理していく必要があります。FrontalからQmonus SDKが稼働しているホストにターミナル接続してgitなどのコマンド操作が必要です。また、ローカルディスクモード
でワークスペースに保存できるプラグインには制限があり、原則Scenario
サーバが提供するリソースのみに限定されます。API Gateway
が提供するAPI Routing
などの定義についてはサポートされないため、Frontalから定義ファイルをダウンロードして個別にリポジトリにプッシュする必要があるため、Scenario
サーバが提供するリソースに限らず幅広くリソース定義するプロジェクトではリポジトリ操作が煩雑になります。ワークスペースは、デフォルトローカルディスクモード
に設定されます。
github連携モード
ワークスペースは、github上に作成されます。ワークスペースは、githubリポジトリと1対1で関連付けられます。githubとの同期設定は、複数プラグイン一括コミット
、プラグイン単位自動コミット
、プラグイン単位自動コミット(コミットコメント自動付与)
の3種類を提供しています。
複数プラグイン一括コミット
モードでは、プラグインを保存したタイミングでは何も動作しません。開発者が任意のタイミングでワークスペース操作画面からコミット操作をした際にgithubリポジトリとQmonus SDKのメモリストアの比較が行われ、編集されたプラグインファイルがリストアップされます。開発者はプラグインファイルの編集差分をUI上で確認できます。開発者はプッシュしたい任意のファイルを複数選択し、コミットコメントを編集して一括でコミットをプッシュできます。本モードはGUIのGithub Sync Setting
では、Do not automatically commit on save
と表現されています。本モードがデフォルトです。
プラグイン単位自動コミット
モードでは、プラグインを保存するタイミングでコミットコメントの入力を開発者に促します。コミットコメントを記述して確定することでgithubにプッシュされます。本モードはGUIのGithub Sync Setting
では、Automatically commit on save
と表現されています。
プラグイン単位自動コミット(コミットコメント自動付与)
モードでは、プラグインを保存したタイミングでgithubにプッシュされます。コミットコメントは自動付与されるため開発者が編集することはできません。本モードはGUIのGithub Sync Setting
では、Automatically commit and genearates comment on save
と表現されています。
Caution
githubへのプッシュは、ワークスペースのカレントブランチに対して行われることに注意してください。コミットログをシンプルにするためにもデフォルトである複数プラグイン一括コミットモード
の利用を推奨しています。
Note
github連携モード
がサポートしているプラグインは以下の通りです。
API Gateway : Routing
Parameter Mapper
Role
Transaction : Counter
Exclusive
Quota
Abort Hook
IPAM
Scenario : Scenario
Daemon
Class
Model
Job
Config
Module
Function
Format
Template
Faker
Illusion
Testcase
Testsuite
Schedule : Daily Webhook
Lambda : Lambda Function
CLIProxy
Device
Collector : Collection Pattern
Collection Hook
Reflector : Reflection
Worker
※ API Gatewayで管理するAccount
はセキュリティ保護のため、サポートされません。
Warning
- 起動パラメータ
plugin_secret_key
に秘密鍵を指定している場合は、Config
Device
について、ローカルディスクモード
及びgithub連携モード
に関わらずデータ暗号化される点に注意してください。 - 暗号化に使用される鍵は、起動パラメータ
plugin_secret_key
で指定します。指定しない場合は暗号化されません。プロジェクト毎に独自の鍵を生成して指定いただくことを推奨します。鍵の生成は、genkey
組込み関数を利用してください。
github連携モード
を有効化するためには以下の起動パラメータを適切に設定する必要があります。
--github_access_token
: githubプライベートアクセストークンを指定します。開発者の個人アカウントでトークンを取得して設定することを推奨しています。
--github_plugins_repos
: 利用する全てのgithubリポジトリをカンマ区切りで指定します。リポジトリ名は、Organization/Project形式
で指定する必要があります。また、指定したリポジトリがgithub上に存在しない場合、Qmonus SDKは自動的にリポジトリを作成しようとする
ことに注意が必要です。リポジトリを作成する権限がない場合は起動に失敗します。
--github_main_branch
: メインブランチ名を指定します。デフォルトはmain
です。古いリポジトリはmaster
を指定することになるでしょう。
--github_default_branch
: デフォルトの開発作業ブランチを指定します。デフォルトはdevelop
です。指定したブランチがカレントのブランチとして起動します。
--gitflow_style
: デフォルトのgitフロー形式を指定します。デフォルトはgitlabflow
です。gitフロー形式は、Qmonus SDKからのブランチやマージ(正確にはプルリクエストに含まれるbaseブランチ)操作に制約をかける役割を持っています。形式は、gitflow
、gitlabflow
、qmonusflow
の3種類が選択できます。制約は以下の通りです。
--plugins_auto_install
: プラグイン自動インストールモードを指定します。True
の場合は、SDK起動時に指定されたリポジトリの--github_default_branch
で指定されたブランチを自動でcheckoutしてプラグインをインストールします。
Note
github連携モード
で起動するとFrontalのworkspace
に--github_plugins_repos
で指定したリポジトリとブランチ情報が表示されるようになります。各リポジトリに対しては、以下の操作ができます。
- Checkout
: 指定したブランチをチェックアウトしてプラグイン環境をリプレースします。
- Create Branch
: ブランチを作成します。gitフロー形式の制約下で現在のカレントブランチから分岐します。
- Delete Branch
: ブランチを削除します。
- Commit
: 複数プラグイン一括コミットモード
でプラグインコードをプッシュします。
- Pull Request
: プルリクエストを送信します。プルリクエストのマージ操作はgithub上で実施することを想定しています。
- Merge
: ブランチをマージします。本機能は複数人の開発プロジェクトでの利用を推奨していません。複数人での開発ではプルリクエストを送信してgithub上で競合解決してマージする運用を推奨します。
- Cherry Pick
: チェリーピックマージをします。本機能は複数人の開発プロジェクトでの利用を推奨していません。複数人での開発ではプルリクエストを送信してgithub上で競合解決してマージする運用を推奨します。
- Show Graph
: githubのコミットグラフを表示します。
Caution
checkout
操作を実施した場合、データベースやメモリストアのデータは全てフラッシュされます。これはプラグインの世代が変更となるため、スキーマ変更によって登録済みのデータ整合を保証できなくなることを避けるためにQmonus SDKが自律的にデータを全てクリアしてcheckoutしたプラグインに基づき、再生成してクリーンに起動するためです。
Caution
現在提供中のportal経由では1度リソースを保存した場合、workspace
の変更ができません。
こちらはworkspace
を指定せずに保存した場合でも同様であり、この場合はworkspace
未指定の状態から変更することはできません。
Caution
workspace
はQmonus SDK上でもリソースの登録・削除をすることが可能です。
/var/plugins
などQmonus内で既に使用されているpathを保護するため、
同様のpathを指定したworkspace
は削除できない仕様になっています。
そのため、pathにはユニークな値を指定していただくようお願いいたします。