From 3ff5609a0603959dbae0c68af9982c3ed66e4405 Mon Sep 17 00:00:00 2001 From: no-problem-kyoichi Date: Sun, 9 Nov 2025 09:56:45 +0900 Subject: [PATCH 1/4] feat: add automated release workflow - Add RELEASE_PROCESS.md with comprehensive release guide - Add auto-release-on-merge.yml for automated releases - Update CHANGELOG.md structure for automation compatibility This introduces automated release management: - Auto-create tags and GitHub Releases on merge - Auto-generate next release branch and draft PR - CHANGELOG-driven release notes - Semantic versioning enforcement --- .github/workflows/auto-release-on-merge.yml | 174 +++++++++++++++++ CHANGELOG.md | 7 + RELEASE_PROCESS.md | 203 ++++++++++++++++++++ 3 files changed, 384 insertions(+) create mode 100644 .github/workflows/auto-release-on-merge.yml create mode 100644 RELEASE_PROCESS.md diff --git a/.github/workflows/auto-release-on-merge.yml b/.github/workflows/auto-release-on-merge.yml new file mode 100644 index 0000000..b6669f7 --- /dev/null +++ b/.github/workflows/auto-release-on-merge.yml @@ -0,0 +1,174 @@ +name: Auto Release on Merge + +on: + pull_request: + types: [closed] + branches: + - main + +jobs: + auto-release: + if: github.event.pull_request.merged == true && startsWith(github.event.pull_request.head.ref, 'release/v') + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + ref: main + fetch-depth: 0 + + - name: Configure git + run: | + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + + - name: Extract version from branch name + id: version + run: | + BRANCH_NAME="${{ github.event.pull_request.head.ref }}" + VERSION_TAG="${BRANCH_NAME#release/}" + VERSION="${VERSION_TAG#v}" + echo "branch_name=$BRANCH_NAME" >> $GITHUB_OUTPUT + echo "version_tag=$VERSION_TAG" >> $GITHUB_OUTPUT + echo "version=$VERSION" >> $GITHUB_OUTPUT + + - name: Validate CHANGELOG entry + run: | + VERSION="${{ steps.version.outputs.version }}" + if ! grep -q "## \[$VERSION\]" CHANGELOG.md; then + echo "ERROR: CHANGELOG.md missing version [$VERSION]" + exit 1 + fi + + - name: Create and push tag + run: | + VERSION_TAG="${{ steps.version.outputs.version_tag }}" + if git rev-parse "$VERSION_TAG" >/dev/null 2>&1; then + echo "Tag already exists, skipping" + exit 0 + fi + git tag "$VERSION_TAG" + git push origin "$VERSION_TAG" + + - name: Extract changelog for release notes + id: changelog + run: | + VERSION="${{ steps.version.outputs.version }}" + TAG="${{ steps.version.outputs.version_tag }}" + if grep -q "## \[$VERSION\]" CHANGELOG.md; then + START_LINE=$(grep -n "## \[$VERSION\]" CHANGELOG.md | cut -d: -f1) + NEXT_LINE=$(tail -n +$((START_LINE + 1)) CHANGELOG.md | grep -n "^## \[" | head -1 | cut -d: -f1) + if [ -n "$NEXT_LINE" ]; then + END_LINE=$((START_LINE + NEXT_LINE - 1)) + sed -n "${START_LINE},${END_LINE}p" CHANGELOG.md > changelog_section.md + else + sed -n "${START_LINE},\$p" CHANGELOG.md > changelog_section.md + fi + sed -i '1d' changelog_section.md + sed -i '/^\[.*\]: http/d' changelog_section.md + sed -i '/^$/N;/^\n$/D' changelog_section.md + cat > release_notes.md <> $GITHUB_OUTPUT + else + echo "found=false" >> $GITHUB_OUTPUT + fi + + - name: Create GitHub Release + uses: softprops/action-gh-release@v2 + with: + tag_name: ${{ steps.version.outputs.version_tag }} + name: v${{ steps.version.outputs.version }} + body_path: release_notes.md + draft: false + prerelease: false + generate_release_notes: ${{ steps.changelog.outputs.found != 'true' }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Calculate next version + id: next_version + run: | + VERSION="${{ steps.version.outputs.version }}" + IFS='.' read -r MAJOR MINOR PATCH <<< "$VERSION" + NEXT_PATCH=$((PATCH + 1)) + NEXT_VERSION="$MAJOR.$MINOR.$NEXT_PATCH" + NEXT_VERSION_TAG="v$NEXT_VERSION" + NEXT_BRANCH="release/$NEXT_VERSION_TAG" + echo "next_version=$NEXT_VERSION" >> $GITHUB_OUTPUT + echo "next_version_tag=$NEXT_VERSION_TAG" >> $GITHUB_OUTPUT + echo "next_branch=$NEXT_BRANCH" >> $GITHUB_OUTPUT + + - name: Delete old release branch if exists + run: | + NEXT_BRANCH="${{ steps.next_version.outputs.next_branch }}" + if git ls-remote --heads origin "$NEXT_BRANCH" | grep -q "$NEXT_BRANCH"; then + git push origin --delete "$NEXT_BRANCH" + fi + + - name: Create next release branch + run: | + NEXT_BRANCH="${{ steps.next_version.outputs.next_branch }}" + git checkout -b "$NEXT_BRANCH" + + - name: Update CHANGELOG for next version + run: | + VERSION="${{ steps.version.outputs.version }}" + VERSION_TAG="${{ steps.version.outputs.version_tag }}" + if ! grep -q "## \[Unreleased\]" CHANGELOG.md; then + awk '/^## \[/ && !inserted { print "## [Unreleased]\n\nNone\n"; inserted = 1 } { print }' CHANGELOG.md > CHANGELOG.tmp + mv CHANGELOG.tmp CHANGELOG.md + fi + sed -i "s|\[Unreleased\]: .*|\[Unreleased\]: https://github.com/no-problem-dev/swift-subscription/compare/$VERSION_TAG...HEAD|" CHANGELOG.md + echo "" >> CHANGELOG.md + echo "" >> CHANGELOG.md + + - name: Commit and push next release branch + run: | + NEXT_BRANCH="${{ steps.next_version.outputs.next_branch }}" + NEXT_VERSION_TAG="${{ steps.next_version.outputs.next_version_tag }}" + if ! git diff --quiet CHANGELOG.md; then + git add CHANGELOG.md + git commit -m "chore: prepare for $NEXT_VERSION_TAG release" + fi + git push origin "$NEXT_BRANCH" + + - name: Create draft PR for next release + run: | + NEXT_BRANCH="${{ steps.next_version.outputs.next_branch }}" + NEXT_VERSION_TAG="${{ steps.next_version.outputs.next_version_tag }}" + gh pr create --draft --title "Release $NEXT_VERSION_TAG" \ + --body "Next release branch. Update CHANGELOG.md and merge when ready." \ + --base main --head "$NEXT_BRANCH" + env: + GH_TOKEN: ${{ github.token }} + + - name: Summary + run: | + VERSION_TAG="${{ steps.version.outputs.version_tag }}" + NEXT_VERSION_TAG="${{ steps.next_version.outputs.next_version_tag }}" + echo "Release $VERSION_TAG created" + echo "Next release branch created: $NEXT_VERSION_TAG" diff --git a/CHANGELOG.md b/CHANGELOG.md index 45caace..9db3378 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,11 @@ このフォーマットは [Keep a Changelog](https://keepachangelog.com/ja/1.0.0/) に基づいており、 このプロジェクトは [Semantic Versioning](https://semver.org/lang/ja/) に準拠しています。 +## [未リリース] + +なし + + ## [1.0.3] - 2025-11-04 ### 追加 @@ -45,3 +50,5 @@ - SwiftUI 対応(async/await、AsyncStream) - Actor-based のスレッドセーフな設計 - iOS 17.0+ および macOS 14.0+ サポート + +[未リリース]: https://github.com/no-problem-dev/swift-subscription/compare/v1.0.3...HEAD diff --git a/RELEASE_PROCESS.md b/RELEASE_PROCESS.md new file mode 100644 index 0000000..a67f0db --- /dev/null +++ b/RELEASE_PROCESS.md @@ -0,0 +1,203 @@ +# リリースプロセスガイド + +swift-subscriptionの新バージョンをリリースする手順を説明します。 + +## 📋 リリース手順 + +### 1. リリースブランチで開発 + +```bash +# リリースブランチに切り替え(例: release/v1.0.12) +git checkout release/v1.0.12 +git pull origin release/v1.0.12 +``` + +### 2. CHANGELOG.mdを更新 + +開発中は「未リリース」セクションに変更を記録: + +```markdown +## [未リリース] + +### 追加 +- 新機能の説明 + +### 修正 +- バグ修正の説明 +``` + +### 3. リリース準備 + +リリース準備ができたら、「未リリース」をバージョン番号に変換: + +```markdown +## [1.0.12] - 2025-11-08 + +### 追加 +- 新機能の説明 + +### 修正 +- バグ修正の説明 +``` + +**重要**: バージョン番号は必ずブランチ名と一致させる(`release/v1.0.12` → `[1.0.12]`) + +### 4. 変更をコミット・プッシュ + +```bash +git add CHANGELOG.md +git commit -m "chore: prepare for v1.0.12 release" +git push origin release/v1.0.12 +``` + +### 5. PRをmainにマージ + +```bash +# PRをマージ(これが自動リリースのトリガー) +gh pr merge --squash +``` + +**このマージで自動的に実行されること:** +1. タグ `v1.0.12` が作成される +2. GitHub Release `v1.0.12` が作成される +3. 次のリリースブランチ `release/v1.0.13` が作成される +4. 次のリリース用のドラフトPRが作成される + +### 6. リリース完了を確認 + +```bash +# GitHub Releaseを確認 +gh release view v1.0.12 + +# 次のドラフトPRを確認 +gh pr list --state all --limit 1 +``` + +## 🔢 バージョニング規則 + +[セマンティックバージョニング](https://semver.org/lang/ja/)に準拠: `MAJOR.MINOR.PATCH` + +| 変更内容 | バージョン | 例 | +|---------|-----------|-----| +| バグ修正のみ | PATCH | 1.0.12 → 1.0.13 | +| 新機能追加(後方互換) | MINOR | 1.0.13 → 1.1.0 | +| 破壊的変更 | MAJOR | 1.1.0 → 2.0.0 | + +**注意**: 現在のワークフローは自動的にPATCHをインクリメントします。MINOR/MAJORバージョンアップの場合は、次のリリースブランチ名を手動で調整してください。 + +## 📝 CHANGELOGの書き方 + +[Keep a Changelog](https://keepachangelog.com/ja/1.0.0/)形式に準拠します。 + +### 変更の分類 + +- **追加 (Added)**: 新機能 +- **変更 (Changed)**: 既存機能の変更 +- **非推奨 (Deprecated)**: 間もなく削除される機能 +- **削除 (Removed)**: 削除された機能 +- **修正 (Fixed)**: バグ修正 +- **セキュリティ (Security)**: セキュリティ関連の変更 + +### 良い例 + +```markdown +## [1.0.12] - 2025-11-08 + +### 追加 +- **新しいテーマ**: Ocean、Forest、Sunset など7種類のビルトインテーマを追加 + +### 修正 +- **ダークモード**: カードコンポーネントの影がダークモードで正しく表示されない問題を修正 +``` + +**良い点:** +- 具体的で詳細な説明 +- ユーザーにとっての価値が明確 +- 太字で重要なポイントを強調 + +### 悪い例 + +```markdown +## [1.0.12] - 2025-11-08 + +### 変更 +- いろいろ修正した +- バグ直した +``` + +**悪い点:** +- 何が変わったのか不明確 +- ユーザーにとっての価値が不明 + +## ⚙️ 自動化の仕組み + +### auto-release-on-merge.yml + +**トリガー**: リリースブランチ(`release/vX.Y.Z`)がmainにマージされたとき + +**処理内容:** +1. ブランチ名からバージョンを抽出 +2. CHANGELOG.mdにバージョンセクションが存在するか検証 +3. タグを自動作成してプッシュ +4. CHANGELOG.mdから該当バージョンのセクションを抽出 +5. リリースノートを生成 +6. GitHub Releaseを作成 +7. 次のバージョンを計算(PATCHインクリメント) +8. 次のリリースブランチを作成 +9. CHANGELOG.mdに「未リリース」セクションを追加 +10. 次のリリース用のドラフトPRを作成 + +### フロー図 + +``` +PRマージ (release/vX.Y.Z → main) + ↓ +auto-release-on-merge.yml 実行 + ↓ +タグ作成 → GitHub Release作成 → 次のリリース準備 +``` + +## 🔧 トラブルシューティング + +### CHANGELOG検証エラー + +**エラー**: `❌ エラー: CHANGELOG.mdにバージョン [X.Y.Z] のセクションが見つかりません` + +**対処法**: +1. リリースブランチでCHANGELOG.mdを修正 +2. フォーマットを確認: `## [X.Y.Z] - YYYY-MM-DD` +3. 再度コミット・プッシュしてPRをマージ + +### GitHub Release作成失敗 + +**原因**: ワークフローの権限不足 + +**対処法**: +1. リポジトリ設定 > Actions > General +2. "Workflow permissions" を "Read and write permissions" に設定 + +### バージョン番号を間違えた場合 + +**マージ前**: PRを閉じて、CHANGELOG.mdを修正してから再度PRを作成 + +**マージ後**: +```bash +# タグを削除 +git push origin :refs/tags/vX.Y.Z + +# GitHub Releaseを手動で削除(Webページから) + +# mainブランチでCHANGELOG.mdを修正してコミット +# 正しいバージョンで再度リリースブランチを作成してPRをマージ +``` + +## 📚 参考資料 + +- [セマンティックバージョニング](https://semver.org/lang/ja/) +- [Keep a Changelog](https://keepachangelog.com/ja/1.0.0/) +- [GitHub Releases](https://docs.github.com/ja/repositories/releasing-projects-on-github/about-releases) + +## 📁 関連ファイル + +- [.github/workflows/auto-release-on-merge.yml](.github/workflows/auto-release-on-merge.yml) - リリース自動化ワークフロー +- [CHANGELOG.md](CHANGELOG.md) - 変更履歴 From 35b2d5867ab96910b22c33a2e963b9abf45f6fb4 Mon Sep 17 00:00:00 2001 From: no-problem-kyoichi Date: Sun, 9 Nov 2025 10:09:51 +0900 Subject: [PATCH 2/4] fix: remove escaped backticks in workflow file --- .github/workflows/auto-release-on-merge.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/auto-release-on-merge.yml b/.github/workflows/auto-release-on-merge.yml index b6669f7..8859d0d 100644 --- a/.github/workflows/auto-release-on-merge.yml +++ b/.github/workflows/auto-release-on-merge.yml @@ -82,11 +82,11 @@ $(cat changelog_section.md) ## Installation -\`\`\`swift +```swift dependencies: [ .package(url: "https://github.com/no-problem-dev/swift-subscription.git", .upToNextMajor(from: "${VERSION}")) ] -\`\`\` +``` ## Links - [CHANGELOG](https://github.com/no-problem-dev/swift-subscription/blob/main/CHANGELOG.md) From 49598f33f0dc86d98a6b01d434391423fee0a3e3 Mon Sep 17 00:00:00 2001 From: no-problem-kyoichi Date: Sun, 9 Nov 2025 10:53:29 +0900 Subject: [PATCH 3/4] =?UTF-8?q?fix:=20=E3=83=AF=E3=83=BC=E3=82=AF=E3=83=95?= =?UTF-8?q?=E3=83=AD=E3=83=BC=E3=82=92=E5=AE=8C=E5=85=A8=E3=81=AA=E6=97=A5?= =?UTF-8?q?=E6=9C=AC=E8=AA=9E=E7=89=88=E3=81=AB=E4=BF=AE=E6=AD=A3=EF=BC=88?= =?UTF-8?q?heredoc=E3=82=A4=E3=83=B3=E3=83=87=E3=83=B3=E3=83=86=E3=83=BC?= =?UTF-8?q?=E3=82=B7=E3=83=A7=E3=83=B3=E3=80=81=E5=85=A8=E3=83=A1=E3=83=83?= =?UTF-8?q?=E3=82=BB=E3=83=BC=E3=82=B8=E6=97=A5=E6=9C=AC=E8=AA=9E=E5=8C=96?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/auto-release-on-merge.yml | 179 +++++++++++++++++--- 1 file changed, 154 insertions(+), 25 deletions(-) diff --git a/.github/workflows/auto-release-on-merge.yml b/.github/workflows/auto-release-on-merge.yml index 8859d0d..ffa3b41 100644 --- a/.github/workflows/auto-release-on-merge.yml +++ b/.github/workflows/auto-release-on-merge.yml @@ -1,5 +1,6 @@ name: Auto Release on Merge +# リリースブランチ(release/vX.Y.Z)がmainにマージされたら自動的にリリース処理を実行 on: pull_request: types: [closed] @@ -8,6 +9,7 @@ on: jobs: auto-release: + # PRがマージされ、かつブランチ名がrelease/vで始まる場合のみ実行 if: github.event.pull_request.merged == true && startsWith(github.event.pull_request.head.ref, 'release/v') runs-on: ubuntu-latest permissions: @@ -29,72 +31,107 @@ jobs: - name: Extract version from branch name id: version run: | + # ブランチ名からバージョンを抽出 (release/v1.0.11 → v1.0.11) BRANCH_NAME="${{ github.event.pull_request.head.ref }}" VERSION_TAG="${BRANCH_NAME#release/}" VERSION="${VERSION_TAG#v}" + echo "branch_name=$BRANCH_NAME" >> $GITHUB_OUTPUT echo "version_tag=$VERSION_TAG" >> $GITHUB_OUTPUT echo "version=$VERSION" >> $GITHUB_OUTPUT + echo "📦 リリースブランチ: $BRANCH_NAME" + echo "🏷️ バージョンタグ: $VERSION_TAG" + echo "🔢 バージョン番号: $VERSION" + - name: Validate CHANGELOG entry run: | VERSION="${{ steps.version.outputs.version }}" + if ! grep -q "## \[$VERSION\]" CHANGELOG.md; then - echo "ERROR: CHANGELOG.md missing version [$VERSION]" + echo "❌ エラー: CHANGELOG.mdにバージョン [$VERSION] のセクションが見つかりません" + echo "リリースブランチでCHANGELOG.mdを更新してください" exit 1 fi + echo "✅ CHANGELOG.mdに [$VERSION] セクションが存在します" + - name: Create and push tag run: | VERSION_TAG="${{ steps.version.outputs.version_tag }}" + + # タグが既に存在する場合はスキップ if git rev-parse "$VERSION_TAG" >/dev/null 2>&1; then - echo "Tag already exists, skipping" + echo "⚠️ タグ $VERSION_TAG は既に存在します。スキップします。" exit 0 fi + + # タグを作成 git tag "$VERSION_TAG" + + # タグをプッシュ git push origin "$VERSION_TAG" + echo "✅ タグ $VERSION_TAG を作成してプッシュしました" + - name: Extract changelog for release notes id: changelog run: | VERSION="${{ steps.version.outputs.version }}" TAG="${{ steps.version.outputs.version_tag }}" + + # CHANGELOG.mdから該当バージョンのセクションを抽出 if grep -q "## \[$VERSION\]" CHANGELOG.md; then + # バージョンセクションの開始行を見つける START_LINE=$(grep -n "## \[$VERSION\]" CHANGELOG.md | cut -d: -f1) + # 次のバージョンセクションの開始行を見つける(または末尾) NEXT_LINE=$(tail -n +$((START_LINE + 1)) CHANGELOG.md | grep -n "^## \[" | head -1 | cut -d: -f1) + if [ -n "$NEXT_LINE" ]; then + # 次のセクションがある場合 END_LINE=$((START_LINE + NEXT_LINE - 1)) sed -n "${START_LINE},${END_LINE}p" CHANGELOG.md > changelog_section.md else + # 最後のセクションの場合 sed -n "${START_LINE},\$p" CHANGELOG.md > changelog_section.md fi + + # バージョン見出しを削除 sed -i '1d' changelog_section.md + + # リンクセクションを削除 sed -i '/^\[.*\]: http/d' changelog_section.md + + # 空行を整理 sed -i '/^$/N;/^\n$/D' changelog_section.md + + # リリースノートを整形して作成 cat > release_notes.md <> $GITHUB_OUTPUT else echo "found=false" >> $GITHUB_OUTPUT + echo "⚠️ CHANGELOG.mdにバージョン $VERSION が見つかりませんでした" > release_notes.md fi - name: Create GitHub Release @@ -113,56 +150,137 @@ EOF id: next_version run: | VERSION="${{ steps.version.outputs.version }}" + + # バージョンをMAJOR.MINOR.PATCHに分解 IFS='.' read -r MAJOR MINOR PATCH <<< "$VERSION" + + # PATCHをインクリメント NEXT_PATCH=$((PATCH + 1)) NEXT_VERSION="$MAJOR.$MINOR.$NEXT_PATCH" NEXT_VERSION_TAG="v$NEXT_VERSION" NEXT_BRANCH="release/$NEXT_VERSION_TAG" + echo "next_version=$NEXT_VERSION" >> $GITHUB_OUTPUT echo "next_version_tag=$NEXT_VERSION_TAG" >> $GITHUB_OUTPUT echo "next_branch=$NEXT_BRANCH" >> $GITHUB_OUTPUT + echo "📈 次のバージョン: $NEXT_VERSION" + echo "🌿 次のリリースブランチ: $NEXT_BRANCH" + - name: Delete old release branch if exists run: | NEXT_BRANCH="${{ steps.next_version.outputs.next_branch }}" + + # リモートブランチが存在する場合は削除 if git ls-remote --heads origin "$NEXT_BRANCH" | grep -q "$NEXT_BRANCH"; then git push origin --delete "$NEXT_BRANCH" + echo "🗑️ 既存のブランチ $NEXT_BRANCH を削除しました" fi - name: Create next release branch run: | NEXT_BRANCH="${{ steps.next_version.outputs.next_branch }}" + + # mainブランチから新しいリリースブランチを作成 git checkout -b "$NEXT_BRANCH" + echo "✅ 次のリリースブランチ $NEXT_BRANCH を作成しました" + - name: Update CHANGELOG for next version run: | VERSION="${{ steps.version.outputs.version }}" VERSION_TAG="${{ steps.version.outputs.version_tag }}" - if ! grep -q "## \[Unreleased\]" CHANGELOG.md; then - awk '/^## \[/ && !inserted { print "## [Unreleased]\n\nNone\n"; inserted = 1 } { print }' CHANGELOG.md > CHANGELOG.tmp + NEXT_VERSION="${{ steps.next_version.outputs.next_version }}" + + # 「未リリース」セクションが存在しない場合のみ追加 + if ! grep -q "## \[未リリース\]" CHANGELOG.md; then + # 最初のバージョンセクションの前に挿入 + awk ' + /^## \[/ && !inserted { + print "## [未リリース]" + print "" + print "なし" + print "" + inserted = 1 + } + { print } + ' CHANGELOG.md > CHANGELOG.tmp mv CHANGELOG.tmp CHANGELOG.md + + echo "✅ CHANGELOG.mdに「未リリース」セクションを追加しました" + else + echo "ℹ️ CHANGELOG.mdに既に「未リリース」セクションが存在します" fi - sed -i "s|\[Unreleased\]: .*|\[Unreleased\]: https://github.com/no-problem-dev/swift-subscription/compare/$VERSION_TAG...HEAD|" CHANGELOG.md + + # 比較リンクを最新バージョンに更新 + sed -i "s|\[未リリース\]: .*|\[未リリース\]: https://github.com/no-problem-dev/swift-subscription/compare/$VERSION_TAG...HEAD|" CHANGELOG.md + + # 必ず変更を発生させるため、自動生成コメントを追加 echo "" >> CHANGELOG.md echo "" >> CHANGELOG.md + echo "✅ CHANGELOG.mdを更新しました" + - name: Commit and push next release branch run: | NEXT_BRANCH="${{ steps.next_version.outputs.next_branch }}" NEXT_VERSION_TAG="${{ steps.next_version.outputs.next_version_tag }}" - if ! git diff --quiet CHANGELOG.md; then + + # 変更がある場合のみコミット + if git diff --quiet CHANGELOG.md; then + echo "ℹ️ CHANGELOG.mdに変更がないため、コミットをスキップします" + else git add CHANGELOG.md git commit -m "chore: prepare for $NEXT_VERSION_TAG release" + echo "✅ 変更をコミットしました" fi + + # ブランチをプッシュ git push origin "$NEXT_BRANCH" + echo "✅ ブランチ $NEXT_BRANCH をプッシュしました" + - name: Create draft PR for next release run: | NEXT_BRANCH="${{ steps.next_version.outputs.next_branch }}" NEXT_VERSION_TAG="${{ steps.next_version.outputs.next_version_tag }}" - gh pr create --draft --title "Release $NEXT_VERSION_TAG" \ - --body "Next release branch. Update CHANGELOG.md and merge when ready." \ - --base main --head "$NEXT_BRANCH" + + gh pr create \ + --draft \ + --title "Release $NEXT_VERSION_TAG" \ + --body "$(cat < Date: Sun, 9 Nov 2025 14:04:44 +0900 Subject: [PATCH 4/4] chore: prepare for v1.0.4 release - update CHANGELOG --- CHANGELOG.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9db3378..003beac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,10 @@ なし +## [1.0.4] - 2025-11-09 + +### 修正 +- 自動リリースワークフローのメッセージを完全に日本語に統一(PRディスクリプション、リリースノート、ログメッセージ) ## [1.0.3] - 2025-11-04 @@ -51,4 +55,6 @@ - Actor-based のスレッドセーフな設計 - iOS 17.0+ および macOS 14.0+ サポート -[未リリース]: https://github.com/no-problem-dev/swift-subscription/compare/v1.0.3...HEAD +[未リリース]: https://github.com/no-problem-dev/swift-subscription/compare/v1.0.4...HEAD +[1.0.4]: https://github.com/no-problem-dev/swift-subscription/compare/v1.0.3...v1.0.4 +[1.0.3]: https://github.com/no-problem-dev/swift-subscription/compare/v1.0.2...v1.0.3