Skip to content

plugin-yml-reference の requires 契機表を正本にし、新機能 PR で 1 行足す手順を PR テンプレートへ入れる #215

Description

@takemi-ohama

何を見つけたか

devbase に新しい機能を足したとき、それを使う Plugin が上げるべき requires.devbase の下限を、契機の表へ足す手順が決まっていない。

契機と上げる版数の対応は、docs/plugin-dev/plugin-yml-reference.md の「更新時の警告」(172〜180 行目)に表として既にある(PR #213 で追記)。

契機 上げる版数(いまの表の記述)
Plugin が project.yml 形式へ移行した その形式を読める版
Plugin のプロジェクトが compose.yml に profiles: を使う ">=3.5.0"(compose-profiles.md へのリンク)

残っているのは次の 3 点である。

  • project.yml の行が「その形式を読める版」とだけ書き、版数を書いていない。同じ文書の 141 行目は「devbase 3.0.0 以降のPluginは ">=3.0.0" を指定してください」と書いており、表だけ読むと版数が分からない
  • 表へ行を足す手順がどこにも無い。.github/pull_request_template.md の「動作確認」にも該当する項目が無い
  • 表にあるのは 2 行だけで、3.6.0 以降に入った機能のうち Plugin が依存しうるものは洗っていない

volareinc/devbase-ext#31(PR #33)で carmo-system-console に profile を導入したときは、設計の段階でこの手順が出ず、配布の直前に気づいて requires.devbase を上げた。

直し方(#195 本文の「採る手」)

統合(consolidate_duplication)。plugin-yml-reference.md の契機の表を正本にする。

  1. project.yml の行の「上げる版数」を ">=3.0.0" と明記し、141 行目と揃える
  2. .github/pull_request_template.md の「動作確認」に「Plugin から使える機能を足したら、docs/plugin-dev/plugin-yml-reference.md の requires 契機表へ 1 行足した」を加える
  3. CHANGELOG.md の [3.6.0] 以降から Plugin が依存しうる機能を洗い、表を埋める

どこで見つけたか

#195 の本文「修正レイヤー」のさかのぼり。PR #213 は現象レイヤー(docs/plugin-dev/compose-profiles.md と plugin-yml-reference.md の 2 ファイルへの追記と相互リンク)を直し、契機の表はそのときに入った。

なぜこの変更の範囲外なのか

#195 の本文が「この issue の範囲は文書 2 ファイルの追記で、運用の導入はそれを超える」と明示している。PR #213 の受け入れ条件は 2 ファイルの記述が食い違わないことまでで、Pull Request のテンプレートへの手順の追加と、既存の機能の洗い出しは含まない。

直さないと何が起きるか

devbase の次の新機能が Plugin から使われたとき、同じことが起きる。requires.devbase を上げ忘れた Plugin は、古い devbase を使う利用者の環境でインストールも更新も通るのに機能だけが黙って効かない(profiles: なら、テスト用サーバ群が起動せず起動する手段も無い)。check_devbase_requirement / warn_unmet_devbase_requirement の仕組みは既にあるため、防げるはずの事故が防げない。影響の範囲は Plugin の配布先すべて。

由来

PR #213(#208 / #195 の現象レイヤーの修正)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions