第4章 IDE 拡張機能の管理
IDE は拡張機能またはプラグインを使用して機能を拡張します。拡張機能を管理するメカニズムは IDE によって異なります。
4.1. Microsoft Visual Studio Code の拡張機能 - オープンソース
拡張機能を管理するために、この IDE は次の Open VSX レジストリーインスタンスのいずれかを使用します。
-
エアギャップ環境、オフライン環境、およびプロキシー制限環境をサポートする OpenShift Dev Spaces の
プラグインレジストリー
Pod で実行される Open VSX レジストリーの組み込みインスタンス。組み込みの Open VSX レジストリーには、open-vsx.org で公開されている拡張機能のサブセットのみが含まれています。このサブセットは カスタマイズ可能 です。 - インターネット経由でアクセスされるパブリック open-vsx.org レジストリー。
- OpenShift Dev Spaces ワークスペース Pod からアクセスできるネットワーク上にデプロイされるスタンドアロンの Open VSX レジストリーインスタンス。
デフォルトは、Open VSX レジストリーの埋め込みインスタンスです。
4.1.1. Open VSX レジストリーインスタンスの選択
デフォルトは、Open VSX レジストリーの埋め込みインスタンスです。
デフォルトの Open VSX レジストリーインスタンスが必要なものではない場合は、次のいずれかのインスタンスを選択できます。
-
インターネットへのアクセスを必要とする、
https://open-vsx.org
の Open VSX レジストリーインスタンス。 - OpenShift Dev Spaces ワークスペース Pod からアクセスできるネットワーク上にデプロイされるスタンドアロンの Open VSX レジストリーインスタンス。
手順
CheCluster
カスタムリソースのopenVSXURL
値を編集します。spec: components: pluginRegistry: openVSXURL: "<url_of_an_open_vsx_registry_instance>" 1
- 1
- 例:
openVSXURL: "https://open-vsx.org"
ヒント-
plugin-registry
Pod に組み込まれた Open VSX レジストリーインスタンスを選択するには、openVSXURL: ''
を使用します。含まれる拡張機能のリストをカスタマイズ できます。 -
また、その URL が組織のクラスター内からアクセス可能であり、プロキシーによってブロックされていない場合は、スタンドアロンの Open VSX レジストリーインスタンスの URL で
openVSXURL
を指すこともできます。
4.1.2. 組み込みの Open VSX レジストリーインスタンスでの拡張機能の追加または削除
埋め込まれた Open VSX レジストリーインスタンスの拡張機能を追加または削除できます。これにより、組織のワークスペースで使用できる Open VSX レジストリーのカスタムビルドが作成されます。
OpenShift Dev Spaces の更新後に最新のセキュリティー修正を取得するには、最新のタグまたは SHA に基づいてコンテナーを再構築します。
手順
選択した各拡張機能の発行元と名前を取得します。
- Open VSX レジストリー Web サイト で拡張機能を見つけて、拡張機能のリストページの URL と拡張機能のバージョンをコピーします。
コピーした URL から <publisher> と <extension> の名前を抽出します。
https://open-vsx.org/extension/<publisher>/<name>
ヒント拡張機能が Microsoft Visual Studio Marketplace からのみ入手可能で、Open VSX からは入手できない場合は、拡張機能の発行者に、これらの 手順 に従って open-vsx.org にも公開するように依頼できます。この GitHub アクション を使用する可能性があります。
拡張機能の発行者がいない場合や、または拡張機能を open-vsx.org に公開してくれない場合、および拡張機能に相当する Open VSX がない場合は、Open VSX チームに 問題を報告する ことを検討してください。
カスタムプラグインレジストリーイメージをビルドし、CheCluster カスタムリソースを更新します。
ヒント- ビルドプロセス中に、各拡張機能は OpenShift Dev Spaces で使用される Visual Studio Code のバージョンとの互換性が検証されます。
OpenShift Dev Spaces インスタンスを使用する場合:
- 管理者として OpenShift Dev Spaces インスタンスにログインします。
新しい Red Hat Registry Service Account を作成し、ユーザー名およびトークンをコピーします。
- plugin registry repository を使用してワークスペースを起動します。
ターミナルを開き、OpenShift Dev Spaces のバージョンに対応する Git タグ (例:
devspaces-3.15-rhel-8
) をチェックアウトします。git checkout devspaces-$PRODUCT_VERSION-rhel-8
-
openvsx-sync.json
ファイルを開き、拡張機能を追加または削除します。 -
ワークスペースの
1.Login to registry.redhat.io
タスクを実行し (TerminalRun Task… devfile 1.Login to registry.redhat.io)、registry.redhat.io にログインします。 -
ワークスペースの
2.Build and Publish a Custom Plugin Registry
タスク (TerminalRun Task… devfile 2.Build and Publish a Custom Plugin Registry) を実行します。 ワークスペースで
3.Configure Che to use the Custom Plugin Registry
タスク (TerminalRun Task… devfile 3.Configure Che to use the Custom Plugin Registry) を実行します。 Linux オペレーティングシステムを使用する場合:
ヒント- Podman および NodeJS バージョン 18.20.3 以降がシステムにインストールされている必要があります。
- Dev Spaces repository をダウンロードまたはフォークし、クローンを作成します。
git clone https://github.com/redhat-developer/devspaces.git
+
- プラグインレジストリーサブモジュールに移動します。
cd devspaces/dependencies/che-plugin-registry/
+
OpenShift Dev Spaces のバージョンに対応するタグ (例:
devspaces-3.15-rhel-8
) をチェックアウトします。git checkout devspaces-$PRODUCT_VERSION-rhel-8
- 新しい Red Hat Registry Service Account を作成し、ユーザー名およびトークンをコピーします。
registry.redhat.io にログインします。
podman login registry.redhat.io
追加または削除する必要がある拡張機能ごと に、
openvsx-sync.json
ファイル を編集します。-
拡張機能を追加するには、発行元、名前、拡張機能のバージョンを
openvsx-sync.json
ファイルに追加します。 -
拡張機能を削除するには、
openvsx-sync.json
ファイルから発行元、名前、拡張機能のバージョンを削除します。 次の JSON 構文を使用します。
{ "id": "<publisher>.<name>", "version": "<extension_version>" }
ヒントクローズドソースの拡張機能または社内の内部使用のみを目的として開発された拡張機能がある場合は、カスタムプラグインレジストリーコンテナーにアクセスできる URL を使用して、
.vsix
ファイルから直接、拡張機能を追加できます。{ "id": "<publisher>.<name>", "download": "<url_to_download_vsix_file>", "version": "<extension_version>" }
- リソースを使用する前に、Microsoft Visual Studio Marketplace の 利用規約 をお読みください。
-
拡張機能を追加するには、発行元、名前、拡張機能のバージョンを
プラグインレジストリーコンテナーイメージをビルドし、quay.io などのコンテナーレジストリーに公開します。
$ ./build.sh -o <username> -r quay.io -t custom
$ podman push quay.io/<username/plugin_registry:custom>
イメージ (quay.io など) を指すように、社内のクラスター内の
CheCluster
カスタムリソースを編集し、変更を保存します。spec: components: pluginRegistry: deployment: containers: - image: quay.io/<username/plugin_registry:custom> openVSXURL: ''
検証
-
plugin-registry
Pod が再始動して実行中であることを確認します。 - ワークスペースを再起動し、ワークスペース IDE の 拡張機能 ビューで使用可能な拡張機能を確認します。