Skip to content

versioning: リリース前のバージョン検証を追加 #140 - #141

Merged
fumikito merged 1 commit into
mainfrom
feature/versioning-guard
Oct 14, 2026
Merged

fumikito merged 1 commit into
mainfrom
feature/versioning-guard

Conversation

@fumikito

Copy link
Copy Markdown
Member

Closes #140

変更内容

actions/versioning の処理を versioning.sh に切り出し、次の検証を追加しました。

  • 正規化: prefix の除去後に、refs/tags/ と先頭の v も常に除去します。v1.2.2 形式のタグでも、呼び出し側で prefix を指定する必要はありません(anyway-feedback 1.2.2 のケース)。
  • 形式チェック: ^[0-9]+(\.[0-9]+){1,3}$ に一致しなければ失敗します(nightly、1.2.3-beta など)。
  • WordPress.org 現行版との比較(opt-in): wporg_slug を指定したときだけ、api.wordpress.org/plugins/info/1.0/<slug>.json の version より大きいことを確認します(ドラフトが巻き戻るケース)。API のエラーや未公開のときはスキップします。数字とドットのみなので、sort -V の結果は version_compare と一致します。
  • 書き換え結果の検証: grep $VERSION による存在確認をやめました。代わりに、すべての Version: / Stable Tag: 行の値がバージョンと完全一致するか確認します。ヘッダーが1つもなければ失敗します。
  • 出力 version(正規化後)を追加しました。
  • inputs を run: に直接展開していたので、env 経由で渡すようにしました(スクリプトインジェクション対策)。

互換性

  • files のどれかが存在しないとき、これまでどおり書き換えをスキップして成功します(今回から警告を出します)。ただし、形式チェックと WordPress.org との比較はその前に実行されるようになりました。
  • andstor/file-existence-action への依存をなくしました。

テスト

tests/versioning/run.sh を追加し、CI の versioning ジョブから実行するようにしました。ローカルでは 21 件すべて通過しています。WordPress.org API は file:// のフェイクに差し替えています。実際の API(anyway-feedback、現行 1.2.3)に対しても、1.2.2 で失敗することを確認しました。

マージ後

  • Wiki(Home.md の versioning 節)を更新します。ローカルでは編集済みです。
  • 各プラグインの release ワークフローに wporg_slug を追加するかどうかは、別途判断してください。

🤖 Generated with Claude Code

@fumikito
fumikito merged commit 19787a5 into main Oct 14, 2026
9 checks passed
@fumikito
fumikito deleted the feature/versioning-guard branch October 14, 2026 08:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant