Chapter 4. Managing IDE extensions IDEs use extensions or plugins to extend their functionality, and the mechanism for managing extensions differs between IDEs. Section 4.1, "Extensions for Microsoft Visual Studio Code - Open Source" 4.1. Extensions for Microsoft Visual Studio Code - Open Source To manage extensions, this IDE uses one of these Open VSX registry instances: The embedded instance of the Open VSX registry that runs in the plugin-registry pod of OpenShift Dev Spaces to support air-gapped, offline, and proxy-restricted environments. The embedded Open VSX registry contains only a subset of the extensions published on open-vsx.org . This subset is customizable . The public open-vsx.org registry that is accessed over the internet. A standalone Open VSX registry instance that is deployed on a network accessible from OpenShift Dev Spaces workspace pods. The default is the embedded instance of the Open VSX registry. 4.1.1. Selecting an Open VSX registry instance The default is the embedded instance of the Open VSX registry. If the default Open VSX registry instance is not what you need, you can select one of the following instances: The Open VSX registry instance at https://open-vsx.org that requires access to the internet. A standalone Open VSX registry instance that is deployed on a network accessible from OpenShift Dev Spaces workspace pods. Procedure Edit the openVSXURL value in the CheCluster custom resource: spec: components: pluginRegistry: openVSXURL: " <url_of_an_open_vsx_registry_instance> " 1 1 For example: openVSXURL: "https://open-vsx.org" . Tip To select the embedded Open VSX registry instance in the plugin-registry pod, use openVSXURL: '' . You can customize the list of included extensions . You can also point openVSXURL at the URL of a standalone Open VSX registry instance if its URL is accessible from within your organization's cluster and not blocked by a proxy. 4.1.2. Adding or removing extensions in the embedded Open VSX registry instance You can add or remove extensions in the embedded Open VSX registry instance. This results in a custom build of the Open VSX registry that can be used in your organization's workspaces. Tip To get the latest security fixes after a OpenShift Dev Spaces update, rebuild your container based on the latest tag or SHA. Procedure Get the publisher and extension names of each chosen extension: Find the extension on the Open VSX registry website and copy the URL of the extension's listing page. Extract the <publisher> and <extension> names from the copied URL: Tip If the extension is only available from Microsoft Visual Studio Marketplace , but not Open VSX , you can ask the extension publisher to also publish it on open-vsx.org according to these instructions , potentially using this GitHub action . If the extension publisher is unavailable or unwilling to publish the extension to open-vsx.org , and if there is no Open VSX equivalent of the extension, consider reporting an issue to the Open VSX team. Download or fork and clone the plugin registry repository . Checkout the branch that corresponds to your OpenShift Dev Spaces version: For each extension that you need to add or remove, edit the openvsx-sync.json file : To add extensions, add the publisher and extension names to the openvsx-sync.json file. To remove extensions, remove the publisher and extension names from the openvsx-sync.json file. Use the following JSON syntax: { "id": " <publisher> . <extension> " } Tip The latest extension version on open-vsx.org is the default. Alternatively, you can add "version": " <extension_version> " on a new line to specify a version. If you have a closed-source extension or an extension developed only for internal use in your organization, you can add the extension directly from a .vsix file by using a URL accessible to your custom plugin registry container: { "id": " <publisher> . <extension> ", "download": " <url_to_download_vsix_file> ", "version": " <extension_version> " } Read the

Commands:
spec: components: pluginRegistry: openVSXURL: " <url_of_an_open_vsx_registry_instance> " 1
https://www.open-vsx.org/extension/ <publisher> / <extension>
git checkout devspaces-USDPRODUCT_VERSION-rhel-8
id:  <publisher> . <extension> 
id:  <publisher> . <extension> 
download:  <url_to_download_vsix_file> 
version:  <extension_version> 
./build.sh -o <username> -r quay.io -t custom
podman push quay.io/ <username/plugin_registry:custom>
spec: components: pluginRegistry: deployment: containers: - image: quay.io/ <username/plugin_registry:custom> openVSXURL: ''
"trustedExtensionAuthAccess": [ "<publisher1>.<extension1>", "<publisher2>.<extension2>" ]
env: - name: VSCODE_TRUSTED_EXTENSIONS value: "<publisher1>.<extension1>,<publisher2>.<extension2>"
kind: ConfigMap apiVersion: v1 metadata: name: trusted-extensions labels: controller.devfile.io/mount-to-devworkspace: 'true' controller.devfile.io/watch-configmap: 'true' annotations: controller.devfile.io/mount-as: env data: VSCODE_TRUSTED_EXTENSIONS: '<publisher1>.<extension1>,<publisher2>.<extension2>'