6.3. デフォルトの拡張機能の設定
デフォルトの拡張機能は、プリインストールされた拡張機能のセットです。これは、拡張機能のバイナリー .vsix ファイルのパスを DEFAULT_EXTENSIONS 環境変数に設定することで指定されます。
起動後、エディターはこの環境変数を確認し、指定されていれば拡張機能のパスを取得し、ユーザーの作業を妨げることなくバックグラウンドでインストールします。
デフォルトの拡張機能の設定は、エディターレベルで .vsix 拡張機能をインストールする場合に便利です。
複数の拡張機能を指定する場合は、セミコロンで区切ります。
DEFAULT_EXTENSIONS='/projects/extension-1.vsix;/projects/extension-2.vsix'
DEFAULT_EXTENSIONS 環境変数を定義する方法について、.vsix ファイルをワークスペースに追加する複数の例を交えて説明します。
デフォルトの .vsix 拡張機能をワークスペースに組み込むには、次の 3 つの方法があります。
- 拡張機能のバイナリーをソースリポジトリーに配置します。
-
devfile の
postStartイベントを使用して、ネットワークから拡張機能のバイナリーを取得します。 -
拡張機能の
.vsixバイナリーをche-codeイメージに追加します。
拡張機能のバイナリーをソースリポジトリーに配置する
拡張バイナリーを Git リポジトリーに配置し、devfile で環境変数を定義するのが、デフォルトの拡張機能をワークスペースに追加する最も簡単な方法です。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イメージをビルドし、これをレジストリーにプッシュします。
$ 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 セクションで、Use an Editor Definition ドロップダウンを展開し、エディターの URI を Editor Image に設定します。
- サンプルをクリックするか、Git リポジトリー URL を使用してワークスペースを作成します。