リポジトリを作成する
Feature作成用のリポジトリを作成します。
以下のリポジトリをテンプレートとして使用します。
必要なファイルを作成する
まず、Feature用のディレクトリをsrc
以下に作成します。
ディレクトリ名はFeatureの名称に対応させます。
sample
というFeatureを作成する場合にはsrc/sample
というディレクトリを作成します。
Feature用のディレクトリにはdevcontainer-feature.json
とinstall.sh
が必要です。
devcontainer-feature.json
にはFeatureの設定を記述します。
{
"name": "Hello, World!",
"id": "hello",
"version": "1.0.0",
"description": "A hello world feature",
"options": {
"greeting": {
"type": "string",
"proposals": [
"hey",
"hello"
],
"default": "hey",
"description": "Select a pre-made greeting, or enter your own"
}
}
}
name
,id
,description
,options
は後ほどの手順で自動生成されるREADME.md
に反映されます。
id
はFeatureのディレクトリ名に対応させる必要があります。
devcontainer-feature.json
で使用できるプロパティの詳細については以下のページをご参照ください。
install.sh
にはFeatureの処理を記述します。
#!/usr/bin/env bash
set -e
GREETING=${GREETING:-undefined}
echo "The provided greeting is: $GREETING"
cat > /usr/local/bin/hello \
<< EOF
#!/bin/sh
RED='\033[0;91m'
NC='\033[0m' # No Color
echo "\${RED}${GREETING}, \$(whoami)!\${NC}"
EOF
chmod +x /usr/local/bin/hello
${GREETING}
のように記述するとdevcontainer-feature.json
のoptions
に設定した値を受け取れます。
テスト
Featuresのテストを実行します。
テストの手順については以下をご参照ください。
テストにはdocker
とdevcontainer-cli
が必要です。
上記のテンプレートリポジトリを使用している場合はDevContainersを起動するとdocker
およびdevcontainer-cli
が使用できます。
GHCRに公開する
作成したFeatureをGitHub Container Registryに公開します。
まず変更をpush
します。
リポジトリのホームから「Actions」をクリックして「Management Release dev container features & Generate Documentation」を実行します。
するとsrc/Feature名/README.md
が自動生成されGHCRにFeatureが公開されます。
参考