From fa6c31db29259f717c8b228edc9d939e5e142668 Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Sat, 8 Aug 2026 15:20:35 +0900 Subject: [PATCH 1/3] =?UTF-8?q?build:=20=E9=85=8D=E5=B8=83=E7=89=A9?= =?UTF-8?q?=E3=82=92=E8=AA=AC=E6=98=8E=E3=81=99=E3=82=8B=E6=96=87=E6=9B=B8?= =?UTF-8?q?=E3=81=AE=E7=89=88=E8=A1=A8=E8=A8=98=E3=81=AF=E3=83=AA=E3=83=AA?= =?UTF-8?q?=E3=83=BC=E3=82=B9=E6=99=82=E3=81=AE=E3=81=BF=E5=90=8C=E6=9C=9F?= =?UTF-8?q?=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 版表記の同期対象を、文書の性質で 2 群に分ける。README と概要が示すのは利用者が実際に入手できる 版であり、開発中の版へ追随させると未公開の版を案内してしまう。リリース版を宣言している間だけ 対象とし、開発中は据え置く。 現在の開発・検証環境を記録する文書と .idea/kotlinc.xml は、カタログやラッパーの更新へ 即座に追随させる必要があるため常に対象とする。 Co-Authored-By: Claude Opus 5 --- build.gradle.kts | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 7a6a61a..6bdab34 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -43,8 +43,10 @@ fun minorOf(version: String) = version.split(".").take(2).joinToString(".") val kotlinCurrent = libs.versions.kotlin.get() val mavenCurrent = libs.versions.maven.get() -val enumizerReleaseVersion = - providers.gradleProperty("enumizerVersion").get().removeSuffix("-SNAPSHOT") +val enumizerDeclaredVersion = providers.gradleProperty("enumizerVersion").get() +val enumizerReleaseVersion = enumizerDeclaredVersion.removeSuffix("-SNAPSHOT") +// リリース版を宣言している状態か(開発中は -SNAPSHOT が付く)。配布物を説明する文書の同期対象を切り替える +val isReleaseVersion = enumizerDeclaredVersion == enumizerReleaseVersion val gradleWrapperVersion = providers .fileContents(layout.projectDirectory.file("gradle/wrapper/gradle-wrapper.properties")) @@ -155,19 +157,27 @@ val versionMentionRules: List> = Regex("""(?<=Maven )\d+\.\d+(?![\d.+])""") to minorOf(mavenCurrent), ) -// 対象箇所: README(セットアップ例・互換表・検証済みビルド環境)・概要 §7(版形式の現行例)・ -// 実装ノート / テスト戦略 / エッジケースへの対応方針(実測・テスト環境の宣言)・kotlinc.xml。 -// 現行版への言及を持つ資料を増やした場合はここへ追加する。 -// ただし過去の版を記録する文書(CHANGELOG)は対象にしない。履歴の版が現行版へ書き換えられてしまう -val versionMentionTargets = +// 対象は文書の性質で 2 群に分ける。現行版への言及を持つ資料を増やした場合は該当する群へ追加する。 +// ただし過去の版を記録する文書(CHANGELOG)はどちらにも入れない。履歴の版が現行版へ書き換えられてしまう。 +// +// 配布物を説明する文書(README のセットアップ例・互換表・概要 §7 の版形式)。表記が指すのは +// 利用者が実際に入手できる版であり、開発中に追随させると未公開の版を案内してしまう。 +// このためリリース版を宣言している間だけ対象とし、開発中は据え置く +val releaseVersionMentionTargets = listOf("README.md", "docs/概要.md") + +// 現在の開発・検証環境を記録する文書と、IDE が同期時に書き戻す設定。 +// カタログやラッパーの更新へ即座に追随させる(追随しないと作業ツリーへ差分が残る) +val environmentVersionMentionTargets = listOf( - "README.md", - "docs/概要.md", - "docs/実装ノート.md", - "docs/test/テスト戦略.md", - "docs/エッジケースへの対応方針.md", - ".idea/kotlinc.xml", - ) + "docs/実装ノート.md", + "docs/test/テスト戦略.md", + "docs/エッジケースへの対応方針.md", + ".idea/kotlinc.xml", + ) + +val versionMentionTargets = + (environmentVersionMentionTargets + + releaseVersionMentionTargets.takeIf { isReleaseVersion }.orEmpty()) .map { it to layout.projectDirectory.file(it).asFile } tasks.register("syncVersionMentions") { From 1949ce75446fe679022075386365afe6bd14bf10 Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Sat, 8 Aug 2026 15:20:36 +0900 Subject: [PATCH 2/3] =?UTF-8?q?ci:=20=E5=85=AC=E9=96=8B=E5=BE=8C=E3=81=AB?= =?UTF-8?q?=E9=96=8B=E7=99=BA=E7=89=88=E3=81=B8=E6=88=BB=E3=81=99=20PR=20?= =?UTF-8?q?=E3=82=92=E5=87=BA=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 公開した版はそのまま残しても次の開発で使えないため、次パッチの -SNAPSHOT へ進める。 既定ブランチは PR 経由の更新を必須とするため直接 push はせず、PR の作成までを行う。 起点はタグではなく既定ブランチとする(タグの指す位置が既定ブランチの先端とは限らない)。 版表記はこの PR では変わらない(同期の対象はリリース版を宣言している間に限られるため)。 Co-Authored-By: Claude Opus 5 --- .github/workflows/publish.yml | 45 +++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 24b5ee0..0eb4464 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -151,3 +151,48 @@ jobs: path: build/dokka/html - id: deploy uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5.0.0 + + # 公開した版は消費済みのため、開発版(次パッチの -SNAPSHOT)へ戻す PR を出す。 + # 直接 push しないのは、既定ブランチが PR 経由の更新を必須としているため。 + # 配布物を説明する文書の版表記はここでは変わらない(同期の対象はリリース版を宣言している間に限るため、 + # 公開済みの版を指したまま据え置かれる) + next-version: + needs: publish + runs-on: ubuntu-latest + timeout-minutes: 15 + permissions: + contents: write + pull-requests: write + steps: + # タグではなく既定ブランチを起点にする(タグの指す位置が既定ブランチの先端とは限らない) + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + ref: main + - name: Open version bump pull request + env: + GH_TOKEN: ${{ github.token }} + run: | + set -euo pipefail + current=$(sed -n 's/^enumizerVersion=//p' gradle.properties) + case "$current" in + *-SNAPSHOT) + echo "::notice::$current is already a development version" + exit 0 + ;; + esac + IFS=. read -r major minor patch <<< "$current" + next="$major.$minor.$((patch + 1))-SNAPSHOT" + branch="chore/next-version-$next" + sed -i "s/^enumizerVersion=.*/enumizerVersion=$next/" gradle.properties + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git switch -c "$branch" + git commit -q -am "build: 開発版を $next へ進める" + git push -q origin "$branch" + gh pr create --base main --head "$branch" \ + --title "build: 開発版を $next へ進める" \ + --body "$(printf '%s\n' \ + "${GITHUB_REF_NAME#v} の公開に伴い、開発版を次のパッチへ進める。" \ + "" \ + "配布物を説明する文書の版表記は公開済みの版を指したまま据え置かれる。" \ + "次のリリースで -SNAPSHOT を外す際にまとめて追随する。")" From ff71045deb081e3f100228a9ae5e1d4d60efbe7e Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Sat, 8 Aug 2026 15:20:36 +0900 Subject: [PATCH 3/3] =?UTF-8?q?ci:=20CI=20=E3=82=92=E6=89=8B=E5=8B=95?= =?UTF-8?q?=E3=81=A7=E3=82=82=E8=B5=B7=E5=8B=95=E3=81=A7=E3=81=8D=E3=82=8B?= =?UTF-8?q?=E3=82=88=E3=81=86=E3=81=AB=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GITHUB_TOKEN が作った PR は push / pull_request を起こさないため、CD が出す版更新の PR には 必須チェックが報告されず、そのままではマージできない。ブランチを指定した手動起動で満たす。 Co-Authored-By: Claude Opus 5 --- .github/workflows/build.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b1b73ae..c89781c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -35,6 +35,9 @@ on: - ".github/workflows/build.yml" - "!**.md" pull_request: + # GITHUB_TOKEN が作った PR は push / pull_request を起こさないため、CD が出す版更新の PR には + # 必須チェックが報告されない。その PR のブランチを指定して手で起動するための入口 + workflow_dispatch: permissions: contents: read