plugin.yml はPluginリポジトリのルートに配置する設定ファイルです。
Pluginのメタ情報とプロジェクト一覧を定義します。
flowchart TB
subgraph repo["Pluginリポジトリ"]
PY["plugin.yml"]
subgraph projects["projects/"]
P1["my-project-a/"]
P2["my-project-b/"]
end
end
subgraph devbase["devbaseルート"]
PS["plugins.yml<br/>(レジストリ)"]
subgraph installed["plugins/"]
IP["my-plugin/<br/>(クローン)"]
end
subgraph symlinks["projects/"]
S1["my-project-a → plugins/my-plugin/projects/my-project-a"]
S2["my-project-b → plugins/my-plugin/projects/my-project-b"]
end
end
PY -->|"devbase plugin install"| PS
repo -->|clone| IP
IP -->|symlink| S1
IP -->|symlink| S2
plugins:
- name: my-plugin
version: 1.0.0
description: "プラグインの説明"
projects:
- name: my-project-a
description: "プロジェクトAの説明"
path: projects/my-project-a
- name: my-project-b
description: "プロジェクトBの説明"
path: projects/my-project-b| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
plugins |
array | Yes | Plugin定義のリスト |
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
name |
string | Yes | Plugin名 |
version |
string | Yes | セマンティックバージョン |
description |
string | No | Pluginの説明 |
projects |
array | Yes | プロジェクト定義のリスト |
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
name |
string | Yes | プロジェクト名 |
description |
string | No | プロジェクトの説明 |
path |
string | Yes | リポジトリルートからの相対パス |
Pluginを一意に識別する名前です。
バリデーションルール:
- 使用可能文字: 英小文字、数字、ハイフン(
a-z,0-9,-) - 先頭はアルファベット
- 長さ: 2文字以上、64文字以下
- devbase内で一意であること
# OK
name: my-plugin
name: data-pipeline-v2
# NG
name: My_Plugin # 大文字・アンダースコア不可
name: -my-plugin # 先頭ハイフン不可
name: a # 2文字未満セマンティックバージョニング(SemVer)形式で記述します。
フォーマット: MAJOR.MINOR.PATCH
version: 1.0.0
version: 2.3.1| 要素 | 意味 | インクリメントするとき |
|---|---|---|
| MAJOR | 破壊的変更 | プロジェクト構成の大幅な変更 |
| MINOR | 後方互換の機能追加 | 新しいプロジェクトの追加 |
| PATCH | バグ修正 | compose.yml や env の軽微な修正 |
Pluginまたはプロジェクトの説明文です。
devbase plugin list で一覧表示されるため、簡潔に記述してください。
description: "EC事業部のマイクロサービス群"Pluginに含まれるプロジェクトの一覧です。 1つのPluginに複数のプロジェクトを含めることができます。
プロジェクトを一意に識別する名前です。
インストール時に projects/<name>/ としてシンボリックリンクが作成されます。
バリデーションルール:
- Plugin名と同様の命名規則
- devbase全体で一意であること(他のPluginのプロジェクト名と重複不可)
リポジトリルートからの相対パスで、プロジェクトディレクトリの位置を指定します。
path: projects/my-project注意事項:
- パスの先頭に
/を付けない(相対パスで記述する) - 指定したディレクトリに
compose.ymlが存在すること - 慣例として
projects/ディレクトリ配下に配置する
最もシンプルな構成です。
plugins:
- name: my-api
version: 1.0.0
description: "APIサーバー開発環境"
projects:
- name: my-api
description: "APIサーバー"
path: projects/my-apiディレクトリ構造:
my-api/
├── plugin.yml
└── projects/
└── my-api/
├── compose.yml
└── env
関連するプロジェクトをまとめて管理する場合に使います。
plugins:
- name: ecommerce
version: 2.1.0
description: "ECサイト開発環境一式"
projects:
- name: ec-frontend
description: "フロントエンド(Next.js)"
path: projects/ec-frontend
- name: ec-backend
description: "バックエンドAPI(Go)"
path: projects/ec-backend
- name: ec-admin
description: "管理画面(Laravel)"
path: projects/ec-adminディレクトリ構造:
ecommerce/
├── plugin.yml
└── projects/
├── ec-frontend/
│ ├── compose.yml
│ └── env
├── ec-backend/
│ ├── compose.yml
│ └── env
└── ec-admin/
├── compose.yml
└── env
plugins 配列に複数のPlugin定義を記述します。
チーム横断で1つのリポジトリを共有する場合に使えます。
plugins:
- name: team-alpha
version: 1.0.0
description: "Alphaチームのプロジェクト"
projects:
- name: alpha-service
description: "Alphaチームのサービス"
path: projects/alpha-service
- name: team-beta
version: 1.2.0
description: "Betaチームのプロジェクト"
projects:
- name: beta-service
description: "Betaチームのサービス"
path: projects/beta-servicedevbaseには似た名前の2つのファイルがあります。混同しないよう注意してください。
| 項目 | plugin.yml | plugins.yml |
|---|---|---|
| 配置場所 | Pluginリポジトリのルート | devbaseルートディレクトリ |
| 管理者 | Plugin開発者 | devbase(自動管理) |
| 用途 | Pluginの定義・メタ情報 | インストール済みPluginのレジストリ |
| Git管理 | Plugin側のリポジトリで管理 | devbase側のリポジトリで管理 |
| 編集 | 手動で編集 | devbase plugin コマンドで自動更新 |
flowchart LR
subgraph plugin_repo["Pluginリポジトリ"]
A["plugin.yml<br/>(開発者が作成)"]
end
subgraph devbase_root["devbaseルート"]
B["plugins.yml<br/>(devbaseが自動管理)"]
end
A -->|"devbase plugin install"| B
# devbaseが自動管理するため、手動編集は非推奨
plugins:
my-plugin:
source: github.com/your-user/my-plugin
version: 1.0.0
installed_at: 2025-01-15T10:30:00Zplugin.yml は devbase plugin install 実行時に自動的にバリデーションされます。
| エラーメッセージ | 原因 | 対処 |
|---|---|---|
Invalid plugin name |
命名規則違反 | 英小文字・数字・ハイフンのみ使用 |
Invalid version format |
SemVer形式でない | MAJOR.MINOR.PATCH 形式に修正 |
Project directory not found |
pathが不正 | ディレクトリの存在を確認 |
compose.yml not found |
compose.ymlが未配置 | 指定ディレクトリに配置 |
Duplicate project name |
プロジェクト名が重複 | 一意な名前に変更 |
- クイックスタート -- Plugin開発の始め方
- compose.yml ガイドライン -- compose.yml の記述ルール