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 を使用してワークスペースを作成します。