6.3. 配置默认扩展
默认扩展是一组预安装的扩展,通过将扩展二进制 .vsix 文件路径放在 DEFAULT_EXTENSIONS 环境变量来指定。
启动后,编辑器会检查此环境变量,如果指定了,则提取到扩展的路径,并将其安装到后台,而不会干扰用户。
配置默认扩展对于从编辑器级别安装 .vsix 扩展非常有用。
如果要指定多个扩展,以分号分隔它们。
DEFAULT_EXTENSIONS='/projects/extension-1.vsix;/projects/extension-2.vsix'
阅读内容,了解如何定义 DEFAULT_EXTENSIONS 环境变量,包括将 .vsix 文件添加到工作区的多个示例。
将默认 .vsix 扩展嵌入到工作区中有三种不同的方法:
- 将扩展二进制文件放在源存储库中。
-
使用 devfile
postStart事件从网络获取扩展二进制文件。 -
在
che-code镜像中包括扩展的.vsix二进制文件。
将扩展二进制文件放在源存储库中
将扩展二进制文件放入 Git 存储库并在 devfile 中定义环境变量是向工作区添加默认扩展的最简单方法。如果存储库 root 中存在 extension.vsix 文件,您可以为工具容器设置 DEFAULT_EXTENSIONS。
流程
在
.devfile.yaml中指定 DEFAULT_EXTENSIONS,如下例所示:schemaVersion: 2.3.0 metadata: generateName: example-project components: - name: tools container: image: quay.io/devfile/universal-developer-image:ubi8-latest env: - name: 'DEFAULT_EXTENSIONS' value: '/projects/example-project/extension.vsix'
使用 devfile postStart 事件从网络获取扩展二进制文件
您可以使用 cURL 或 GNU Wget 将扩展下载到您的工作区。为此,您需要:
- 指定 devfile 命令,将扩展下载到您的工作中
-
添加
postStart事件,以在工作空间启动时运行命令 - 在 devfile 中定义 DEFAULT_EXTENSIONS 环境变量
流程
将以下示例中显示的值添加到 devfile 中:
schemaVersion: 2.3.0 metadata: generateName: example-project components: - name: tools container: image: quay.io/devfile/universal-developer-image:ubi8-latest env: - name: DEFAULT_EXTENSIONS value: '/tmp/extension-1.vsix;/tmp/extension-2.vsix' commands: - id: add-default-extensions exec: # name of the tooling container component: tools # download several extensions using curl commandLine: | curl https://.../extension-1.vsix --location -o /tmp/extension-1.vsix curl https://.../extension-2.vsix --location -o /tmp/extension-2.vsix events: postStart: - add-default-extensions警告在某些情况下,curl 可能会下载
.gzip压缩文件。这可能会使安装扩展不可能。要修复尝试将文件保存为 .vsix.gz 文件,然后使用 gunzip 解压缩该文件。这会将 .vsix.gz 文件替换为解压缩的 .vsix 文件。curl https://some-extension-url --location -o /tmp/extension.vsix.gz gunzip /tmp/extension.vsix.gz
在 che-code 镜像中包括扩展 .vsix 二进制文件。
使用编辑器镜像中捆绑的默认扩展,以及 ConfigMap 中定义的 DEFAULT_EXTENSIONS 环境变量,您可以在不更改 devfile 的情况下应用默认扩展。
按照以下步骤为编辑器镜像添加所需的扩展。
流程
-
创建一个目录,并将您选择的
.vsix扩展放在这个目录中。 使用以下内容创建 Dockerfile:
# inherit che-incubator/che-code:latest FROM quay.io/che-incubator/che-code:latest USER 0 # copy all .vsix files to /default-extensions directory RUN mkdir --mode=775 /default-extensions COPY --chmod=755 *.vsix /default-extensions/ # add instruction to the script to copy default extensions to the working container RUN echo "cp -r /default-extensions /checode/" >> /entrypoint-init-container.sh构建镜像并将其推送到 registry:
$ docker build -t yourname/che-code:next . $ docker push yourname/che-code:next将新 ConfigMap 添加到用户的项目中,定义 DEFAULT_EXTENSIONS 环境变量,并指定扩展的绝对路径。此 ConfigMap 将环境变量设置为用户项目中的所有工作区。
kind: ConfigMap apiVersion: v1 metadata: name: vscode-default-extensions labels: controller.devfile.io/mount-to-devworkspace: 'true' controller.devfile.io/watch-configmap: 'true' annotations: controller.devfile.io/mount-as: env data: DEFAULT_EXTENSIONS: '/checode/default-extensions/extension1.vsix;/checode/default-extensions/extension2.vsix'使用
yourname/che-code:next镜像创建工作区。首先,打开仪表板并导航到左侧的 Create Workspace 选项卡。- 在 Editor Selector 部分中,展开 使用 Editor Definition 下拉菜单,并将编辑器 URI 设置为 Editor Image。
- 点任何示例或使用 Git 存储库 URL 创建工作区。