diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 4e755d9a..29569402 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -19,6 +19,7 @@ - [ ] 影響を受けるコマンドの主要シナリオを手動で確認した - [ ] 必要に応じてドキュメント (`docs/`, `README.md`) を更新した - [ ] 利用者に見える変更なら `CHANGELOG.md` の `[Unreleased]` を更新した +- [ ] Plugin から使える機能を足したら、`docs/plugin-dev/plugin-yml-reference.md` の `requires` 契機表へ 1 行足した - [ ] CI が green である ## スクリーンショット・ログ(任意) diff --git a/docs/plugin-dev/plugin-yml-reference.md b/docs/plugin-dev/plugin-yml-reference.md index 588f2ff7..e6e8b341 100644 --- a/docs/plugin-dev/plugin-yml-reference.md +++ b/docs/plugin-dev/plugin-yml-reference.md @@ -170,14 +170,21 @@ devbase 本体を更新してください (この警告を止める場合は DEV ``` > **`requires.devbase` は本体の版数と一緒に自動では上がりません。** 上げるのは、**Plugin が -> devbase の新しい機能に依存しはじめたタイミング**です。契機は次のとおりです。 +> devbase の新しい機能に依存しはじめたタイミング**です。契機は次の表のとおりで、この表が正本です。 > -> | 契機 | 上げる版数 | +> | 契機 | Plugin の側ですること | > | --- | --- | -> | Plugin が `project.yml` 形式へ移行した | その形式を読める版 | -> | Plugin のプロジェクトが `compose.yml` に `profiles:` を使う | `">=3.5.0"`([テスト用サーバを後から起動・停止する](compose-profiles.md#plugin-として配るなら-requiresdevbase-を-350-以上へ上げる)) | +> | Plugin が `project.yml` 形式へ移行した | `requires.devbase` を `">=3.0.0"` へ上げる | +> | Plugin のプロジェクトが `compose.yml` に `profiles:` を使う | `requires.devbase` を `">=3.5.0"` へ上げる([テスト用サーバを後から起動・停止する](compose-profiles.md#plugin-として配るなら-requiresdevbase-を-350-以上へ上げる)) | +> | Plugin のプロジェクトが、base イメージに後から足された道具を前提にする(`pdftoppm` などの `poppler-utils`・`python3-lxml` は 3.7.0、`shellcheck`・`tmux-go` などの tmux のセッションのコマンドは 3.8.0) | `requires.devbase` を、その道具を足した版以上へ上げる(どの版で足されたかは `CHANGELOG.md` の Added を見る) | +> | Plugin のプロジェクトが、コンテナの中で `~/.shellrc.d/`(環境変数 `DEVBASE_SHELLRC_DIR`)へシェルの設定を置く | `requires.devbase` を `">=3.8.0"` へ上げる | +> | devbase 4.0.0 以降で使われる Plugin のプロジェクト(アカウントグループの宣言が必須) | `requires.devbase` の下限ではなく、Plugin のプロジェクトの `env` に `DEVBASE_ACCOUNT_GROUP=<グループ>` を書く(`default` は予約語で使えない。[クイックスタート 2.3.1](quickstart.md#231-env-ファイル必須アカウントグループの宣言を書く))。宣言が無いと `devbase up` / `scale` が止まる | > -> どちらも、その機能を使い始めた Pull Request で一緒に上げます。 +> どれも、その機能を使い始めた Pull Request で一緒に行います。base イメージの道具とシェルの設定の置き場所は、 +> 利用者がイメージを建て直すまで効きません。 +> +> devbase の側で Plugin から使える機能(Plugin が書く設定・compose の書き方・イメージの道具・コンテナの中の置き場所など)を +> 足した Pull Request は、この表へ 1 行足します(Pull Request のテンプレートの「動作確認」に項目があります)。 ### `priority` diff --git a/docs/plugin-dev/quickstart.md b/docs/plugin-dev/quickstart.md index 052953d0..b41af63e 100644 --- a/docs/plugin-dev/quickstart.md +++ b/docs/plugin-dev/quickstart.md @@ -57,7 +57,7 @@ my-plugin/ └── my-project/ ├── compose.yml ├── project.yml - └── env # 中身は任意だが、ファイルは必須 + └── env # 必須。DEVBASE_ACCOUNT_GROUP の宣言を書く ``` ### 2.2 compose.yml の作成 @@ -138,19 +138,19 @@ repos: | `scale` | 起動するコンテナ数(既定: 2) | | `open_editor` | `devbase up` 後に VS Code を自動で開くか | -### 2.3.1 env ファイル(ファイルは必須・中身は任意) +### 2.3.1 env ファイル(必須・アカウントグループの宣言を書く) -`projects/my-project/env` には、**コンテナへ渡す環境変数**だけを書きます(`ENABLE_SSH` など)。devbase 自身の設定は `project.yml` にあります。 +`projects/my-project/env` には、**アカウントグループの宣言**(`DEVBASE_ACCOUNT_GROUP`)と、**コンテナへ渡す環境変数**(`ENABLE_SSH` など)を書きます。devbase 自身のそれ以外の設定は `project.yml` にあります。 ```bash +# projects/my-project/env +DEVBASE_ACCOUNT_GROUP=personal ENABLE_SSH=true ``` -2.2 の `compose.yml` が `env_file: - env` で参照するため、**ファイルは必ず作成してください**(実在しないと `devbase up` が compose の起動時に失敗します)。渡したい環境変数が無ければ空ファイルで構いません。 - -```bash -touch projects/my-project/env -``` +- **`DEVBASE_ACCOUNT_GROUP` の宣言は必須です。** 宣言が無い・空のとき、`devbase up` / `scale` は何も作らずに止まります。既定の値は無く、`default` は予約語のため使えません。会社の機密を使わない個人・OSS のプロジェクトは `personal` を、それ以外は使うアカウントの単位(`acme` など)を書きます。詳しくは [環境変数の説明のアカウントグループ](../user/environment-variables.md#アカウントグループ-devbase_account_group) を参照してください +- 2.2 の `compose.yml` が `env_file: - env` で参照するため、ファイルが無いと `devbase up` が compose の起動時にも失敗します +- この宣言を求めるのは devbase 4.0.0 からです。devbase の機能を使い始めたときに Plugin の側ですること(`requires.devbase` を上げるなど)は [`requires` の契機の表](plugin-yml-reference.md#更新時の警告) にあります ### 2.4 .env ファイル(任意) @@ -324,7 +324,7 @@ flowchart LR | 作業ディレクトリ | `${COMPOSE_PROJECT_NAME}_work_${CONTAINER_INDEX:-1}` | `/work` | コンテナ専用 | - `devbase_home_ubuntu`(`/persistent/ai`)は SSH 鍵・共有ファイル・`~/.claude/plugins` など、契約に紐づかずコンテナ横断で共有したい資産の永続化に使用(entrypoint が symlink。旧 `/home/ubuntu` 直接マウントは廃止) -- `devbase_home_`(`/persistent/group`)は認証情報と会話ログ。`` は `DEVBASE_ACCOUNT_GROUP`(未設定なら `default`)で決まり、devbase が生成 compose へ自動注入する +- `devbase_home_`(`/persistent/group`)は認証情報と会話ログ。`` は `projects//env` に宣言した `DEVBASE_ACCOUNT_GROUP` で決まり、devbase が生成 compose へ自動注入する(宣言は必須で、`default` は予約語のため使えない。[2.3.1](#231-env-ファイル必須アカウントグループの宣言を書く)) - 作業ディレクトリボリュームはプロジェクトごと・コンテナインデックスごとに独立 ### 5.4 コンテナイメージの選択