Skip to content

ci: automate versioning, changelog and Modrinth releases - #4

Merged
f0reachARR merged 2 commits into
mainfrom
ci/release-automation
Jul 26, 2026
Merged

ci: automate versioning, changelog and Modrinth releases#4
f0reachARR merged 2 commits into
mainfrom
ci/release-automation

Conversation

@f0reachARR

@f0reachARR f0reachARR commented Jul 26, 2026

Copy link
Copy Markdown
Owner

Summary

Modrinth へのリリースに向けて、バージョン管理・CHANGELOG 生成・公開を全自動化する。

コミット (Conventional Commits)
  → release-please が Release PR を自動生成/更新(CHANGELOG + バージョン bump)
  → PR をマージすると タグ v0.1.0 + GitHub Release を作成
  → 同一ワークフローで GitHub Packages / Modrinth へ publish + README を Modrinth 説明文へ同期

Details

バージョンの単一管理点を gradle.properties

build.gradleversion = '1.0.0' を削除し、gradle.properties に移した。Gradle が自動で読み、processResourcespaper-plugin.yml に展開し、Minotaur が Modrinth のバージョン番号として再利用する。

release-please の generic updater 用にブロック注釈で囲んでいる。行末注釈形式(version=1.0.0 # x-release-please-version)だと Java Properties では # 以降も値に含まれて壊れるため。

release-please

  • release-please-config.jsonsimple strategy、extra-filesgradle.properties を更新、CHANGELOG のセクション定義
  • .release-please-manifest.json0.0.0 で初期化。履歴に feat: があるため初回リリースは自動的に 0.1.0 になる(1.0.0 未満では minor bump が既定)
  • CHANGELOG.md は初回リリース PR が自動生成するので事前作成は不要

.github/workflows/release.ymlpublish.yml を統合)

release-please ジョブと publish ジョブを 1 ワークフローに収めた。GITHUB_TOKEN が作成した Release は他ワークフローの release: published を発火させないため、publish を別ワークフローに分けると PAT なしでは永久に動かない。

publish ジョブは release_created == 'true' でガードし、build → GitHub Packages → Modrinth → Release への JAR 添付を行う。workflow_dispatch にタグ名を渡せば既存タグの再 publish もできる。

Modrinth (Minotaur 2.9.0)

  • project slug: modernvillagershop / loader: paper
  • 対応 Minecraft バージョンは gradle.propertiesmodrinth.gameVersions に集約。ハード依存である BedrockDialog の対応表(1.21.8〜1.21.11 / 26.1 系 / 26.2)に合わせている
  • Modrinth 上の依存は bedrockdialog(required)と placeholderapi(optional)。Vault は Modrinth にプロジェクトが存在しないため本文での案内のみ
  • modrinthSyncBodyREADME.md をプロジェクト説明文として push する。README のリンクは既に全て絶対 URL なのでそのまま使える
  • changelog は GitHub Release 本文をワークフローが build/modrinth-changelog.md に書き出したものを使う

.github/workflows/pr-title.yml

Squash merge では PR タイトルがそのまま main のコミットメッセージになり、それを release-please が読む。崩れると CHANGELOG とバージョン判定が壊れるため PR タイトルを検証する。

ドキュメント

AGENTS.md にリリース手順、CLAUDE.md にリリース自動化の設計判断、README.md に Modrinth バッジとダウンロードリンクを追記。

Test plan

  • ./gradlew build — テスト込みで成功
  • ./gradlew modrinth --dry-run — 設定が評価でき、shadowJar が依存として自動配線されることを確認
  • unzip -p build/libs/ModernVillagerShop-0.0.0.jar paper-plugin.ymlversion: "0.0.0" が埋め込まれることを確認
  • workflow YAML / config JSON の構文検証
  • このPRで pr-title.yml が実際に走ることを確認
  • マージ後、release-please が「chore: release 0.1.0」PR を作ることを確認

マージ前に必要なリポジトリ設定

  1. Modrinth で modernvillagershop プロジェクトを作成
  2. Modrinth PAT を Secret MODRINTH_TOKEN に登録
  3. Settings → Actions → General → Allow GitHub Actions to create and approve pull requests を有効化
  4. Settings → General → Pull Requests → Allow squash merging +「Default to PR title for squash merge commits」

初回 CHANGELOG は規約に沿っていない初期コミット(add guidelook player など)が除外された形で生成される。リリース PR 上で CHANGELOG.md を直接編集できるので、マージ前に加筆するのが良い。

f0reachARR and others added 2 commits July 27, 2026 00:15
Wire up release-please so Conventional Commits drive the version bump and
the CHANGELOG, and publish the resulting release to Modrinth with Minotaur.

The version moves out of build.gradle into gradle.properties, which is now
the single source of truth for Gradle, paper-plugin.yml and the Modrinth
version number.

publish.yml is folded into release.yml: a release created with GITHUB_TOKEN
does not fire `release: published`, so a separate publish workflow would
never run without a PAT.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
pull_request_target runs with a writable token in the base-branch context;
this check only needs to read the PR title, so the safer trigger is enough.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@f0reachARR
f0reachARR merged commit 0b3efc2 into main Jul 26, 2026
2 checks passed
@f0reachARR
f0reachARR deleted the ci/release-automation branch July 26, 2026 15:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant