Skip to content

Latest commit

History

History
355 lines (274 loc) · 11.8 KB

File metadata and controls

355 lines (274 loc) · 11.8 KB

plugin.yml リファレンス

plugin.yml は Plugin ディレクトリのルートに配置する設定ファイルです。 Plugin のメタ情報(名前・バージョン・必要な devbase 本体のバージョンなど)を定義します。


概要

flowchart TB
subgraph repo["Pluginリポジトリ"]
RY["registry.yml<br/>(リポジトリが持つPlugin一覧)"]
subgraph plugin["my-plugin/"]
PY["plugin.yml<br/>(Pluginのメタ情報)"]
subgraph projects["projects/"]
P1["my-project-a/"]
P2["my-project-b/"]
end
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
RY -->|"devbase plugin install"| PS
repo -->|clone| IP
IP -->|symlink| S1
IP -->|symlink| S2
Loading

基本構造

name: my-pluginversion: "1.0.0"description: "プラグインの説明"requires:
devbase: ">=3.0.0"priority: 0

Plugin が提供するプロジェクトは projects/ 配下のディレクトリから自動的に検出されます。 plugin.yml にプロジェクトを列挙する必要はありません。


フィールド一覧

フィールド必須既定値説明
namestringYesディレクトリ名Plugin名
versionstringNo0.1.0セマンティックバージョン
descriptionstringNo""Pluginの説明
requiresmapNoなし動作要件。現在は devbase キーのみ
requires.devbasestringNoなし必要な devbase 本体の最低バージョン(例: ">=3.0.0"
priorityintNo0プロジェクト名が他Pluginと衝突したときの優先度。大きいほうが projects/<name> を取る

フィールド詳細

name(Plugin名)

Pluginを一意に識別する名前です。省略するとディレクトリ名が使われますが、 registry.ymlplugins[*].name と食い違うと追跡しにくいため明示してください。

命名規則(推奨):

  • 使用可能文字: 英小文字、数字、ハイフン(a-z, 0-9, -
  • 先頭はアルファベット
  • 長さ: 2文字以上、64文字以下
  • devbase内で一意であること
# OKname: my-pluginname: data-pipeline-v2# NGname: My_Plugin # 大文字・アンダースコア不可name: -my-plugin # 先頭ハイフン不可name: a # 2文字未満

version

セマンティックバージョニング(SemVer)形式で記述します。

フォーマット:MAJOR.MINOR.PATCH

version: "1.0.0"version: "2.3.1"
要素意味インクリメントするとき
MAJOR破壊的変更プロジェクト構成の大幅な変更
MINOR後方互換の機能追加新しいプロジェクトの追加
PATCHバグ修正compose.yml や env の軽微な修正

description

Pluginの説明文です。 devbase plugin list で一覧表示されるため、簡潔に記述してください。

description: "EC事業部のマイクロサービス群"

requires

この Plugin が動作するために必要な devbase 側の条件を書きます。 現在使えるキーは devbase(本体の最低バージョン)だけです。

requires:
devbase: ">=3.0.0"
意味
">=3.0.0"devbase 3.0.0 以上が必要
">=3.0.0,<4.0.0"範囲指定(カンマ区切りは AND)
"==3.0.0" / "3.0.0"一致(演算子を省略すると == 扱い)
省略バージョン要件なし(どの版でも導入を試みる)

使える演算子は >= / <= / > / < / == / != です。版数の要素数は自由で、 桁数が違う場合は短い方を 0 で埋めて比較します(">=3.0"3.0.0 は等しい、 ">=3.0.0.1"3.0.0 は満たさない)。比較は数値で行うため 10.0.03.0.0 より新しく扱われます。

devbase 3.0.0 以降のPluginは ">=3.0.0" を指定してください。 プロジェクト設定を projects/<name>/project.yml で記述する形式は devbase 3.0.0 で導入されたもので、 2.x 系の devbase は project.yml を読めません。

インストール時の検証

devbase plugin install は、要件を満たさない Plugin のインストールを中止します。

Error: プラグイン 'carmo-web' は devbase >=3.0.0 を要求していますが、現在の devbase は 2.2.0 です。
devbase を更新してから再度インストールしてください (検証を飛ばす場合は DEVBASE_IGNORE_PLUGIN_REQUIRES=1)。
  • 既存のインストールに触れるに検証するため、入れ替えに失敗しても既に入っている Plugin は壊れません
  • 解釈できない書式("^3.0.0" など)や版数のときは、警告を出して検証せずに続行します。独自記法を書いた Plugin をインストール不能にするより実害が小さいためです
  • 検証側の判断が誤っているときは DEVBASE_IGNORE_PLUGIN_REQUIRES=1 で無効化できます

必ずクォートしてください。devbase: 3.10 のようにクォート無しで書くと YAML が数値 (float の 3.1)として読み、元の表記へ戻せません。この場合は誤った版で比較せず、 警告を出して検証をスキップします(devbase: ">=3.10" と書けば検証されます)。

更新時の警告

devbase plugin updategit pull)で Plugin 側の requires.devbase が上がることがあります。 更新自体は既に済んでいて中止できないため、要件を満たさなくなった Plugin は警告で知らせます。

WARNING プラグイン 'carmo-web' は devbase >=4.0.0 を要求していますが、現在の devbase は 3.0.0 です。
devbase 本体を更新してください (この警告を止める場合は DEVBASE_IGNORE_PLUGIN_REQUIRES=1)。

requires.devbase を上げるのは、Plugin が project.yml 形式へ移行したタイミングです。 本体の版数と一緒に自動では上がりません。

priority

同じ名前のプロジェクトを複数のPluginが提供したときに、どちらが projects/<name> の シンボリックリンクを取るかを決める整数です(既定 0、大きいほうが勝ち)。 負けた側は projects/<name>.<owner>--<repo> の形でリンクされ、どちらも利用できます。

priority: 10

プロジェクトの検出

plugin.yml にプロジェクト一覧は書きません。Plugin ディレクトリ直下の projects/ にある ディレクトリ(. で始まるものを除く)がそのままプロジェクトとして扱われ、インストール時に devbase ルートの projects/<name>/ へシンボリックリンクが作成されます。

my-plugin/
├── plugin.yml
└── projects/
├── my-project-a/ -> projects/my-project-a として公開される
│ ├── compose.yml
│ ├── project.yml
│ └── env
└── my-project-b/
├── compose.yml
├── project.yml
└── env

各プロジェクトディレクトリの中身は クイックスタートproject.yml リファレンス を参照してください。


使用例

単一プロジェクトのPlugin

最もシンプルな構成です。

name: my-apiversion: "1.0.0"description: "APIサーバー開発環境"requires:
devbase: ">=3.0.0"

ディレクトリ構造:

my-api/
├── plugin.yml
└── projects/
└── my-api/
├── compose.yml
├── project.yml
└── env

複数プロジェクトのPlugin

関連するプロジェクトをまとめて管理する場合に使います。

name: ecommerceversion: "2.1.0"description: "ECサイト開発環境一式"requires:
devbase: ">=3.0.0"

ディレクトリ構造:

ecommerce/
├── plugin.yml
└── projects/
├── ec-frontend/
│ ├── compose.yml
│ ├── project.yml
│ └── env
├── ec-backend/
│ ├── compose.yml
│ ├── project.yml
│ └── env
└── ec-admin/
├── compose.yml
├── project.yml
└── env

1リポジトリに複数Pluginを含む場合

plugin.yml は Plugin ごとに 1 ファイルです。1 つのリポジトリで複数の Plugin を配布する場合は、 Plugin ごとにディレクトリを分けてそれぞれに plugin.yml を置き、リポジトリルートの registry.yml に一覧を記述します。

my-registry/
├── registry.yml
├── team-alpha/
│ ├── plugin.yml
│ └── projects/alpha-service/
└── team-beta/
├── plugin.yml
└── projects/beta-service/

registry.yml:

name: my-registrydescription: "社内レジストリ"plugins:
- name: team-alphapath: team-alphadescription: "Alphaチームのプロジェクト"
- name: team-betapath: team-betadescription: "Betaチームのプロジェクト"

plugin.yml と plugins.yml の違い

devbaseには似た名前の2つのファイルがあります。混同しないよう注意してください。

項目plugin.ymlplugins.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
Loading

plugins.yml の構造(参考)

# devbaseが自動管理するため、手動編集は非推奨plugins:
my-plugin:
source: github.com/your-user/my-pluginversion: 1.0.0installed_at: 2025-01-15T10:30:00Z

バリデーション

devbase plugin install はリポジトリを clone したあと registry.ymlplugin.yml を読み込みます。

よくあるエラーと対処

エラーメッセージ原因対処
Failed to parse .../plugin.ymlYAML の構文エラーインデント・引用符を確認
No registry.yml found in repositoryリポジトリルートに registry.yml が無いリポジトリルートに配置する
Plugin '<name>' not found in <repo>registry.yml に該当 Plugin の記載が無いplugins[*].name を確認
Plugin directory not found: <path>registry.ymlpath が実在しないpath とディレクトリ名を突き合わせる

関連ドキュメント