ワークスペース
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に秘密鍵を指定している場合は、ConfigDeviceについて、ローカルディスクモード及び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にはユニークな値を指定していただくようお願いいたします。