Skip to content

fix(ci): リリースワークフローにバージョンアップコミット・タグのpush処理を追加#968

Merged
HansRobo merged 3 commits intodevelopfrom
fix/release-push-commit
Nov 8, 2025
Merged

fix(ci): リリースワークフローにバージョンアップコミット・タグのpush処理を追加#968
HansRobo merged 3 commits intodevelopfrom
fix/release-push-commit

Conversation

@HansRobo
Copy link
Member

@HansRobo HansRobo commented Nov 8, 2025

概要

リリースワークフローで、バージョンアップコミットとタグが正しくリモートリポジトリにpushされるように修正しました。

問題の詳細

発生していた問題

前回のPR (#967) マージ後、以下の問題が発生していました:

  1. GitHub Release 1.0.1 は作成されたが、package.xml のバージョンは 1.0.0 のまま
  2. タグ 1.0.1 が存在するが、そのタグが指すコミットでは package.xml は更新されていない
  3. develop ブランチにバージョンアップのコミットが反映されていない

根本原因

# 問題のあった処理フロー
1. catkin_prepare_release --no-push
   → バージョンアップコミット作成(ローカルのみ)
2. git commit(コミットメッセージ修正)
   → コミット修正(ローカルのみ)
3. ❌ push ステップが存在しない
4. softprops/action-gh-release
   → タグがリモートに存在しないため、現在のコミット(バージョンアップ前)にタグを作成

結果: バージョンアップコミットはローカルのみに存在し、リモートには反映されず、タグは古いコミットを指してしまう。

実施した修正

1. 即時対応(完了済み)

  • 不整合なタグ 1.0.1 を削除(ローカル・リモート)
  • GitHub Release 1.0.1 を削除

2. ワークフロー修正(本PR)

追加した2つのステップ:

① Create and push tag

タグをローカルで作成

② Push version bump commit and tag

バージョンアップコミットとタグをリモートにpush

追加位置: 「Amend commit with custom message」ステップの後

修正後の処理フロー

1. catkin_prepare_release --no-push
   → バージョンアップコミット作成(ローカル)
2. git commit(コミットメッセージ修正)
   → コミット修正(ローカル)
3. git tag(タグ作成)
   → バージョンアップコミットにタグを作成(ローカル)
4. ✅ git push(新規追加)
   → バージョンアップコミットとタグを push
5. softprops/action-gh-release
   → 既存のタグを使用(正しいコミットを指している)

効果

✅ バージョンアップコミットが develop ブランチに正しく反映される
✅ タグが正しいバージョンの package.xml を含むコミットを指す
✅ GitHub Release が正しいバージョン情報を持つ
✅ 次回以降のリリースも正しく動作する

テスト計画

  • ワークフローの構文が正しいことを確認(CI実行)
  • PRマージ後、次回のdevelopへのpush時に自動リリースが正しく動作することを確認
  • バージョンアップコミットがdevelopブランチに反映されることを確認
  • タグが正しいバージョンを指すことを確認

関連PR

🤖 Generated with Claude Code

問題の背景:
- catkin_prepare_release は --no-push オプションで実行され、
  バージョンアップコミットとタグがローカルのみで作成されていた
- softprops/action-gh-release がタグを自動作成する際、
  バージョンアップ前のコミットにタグを作成してしまう
- 結果として、タグは存在するが package.xml のバージョンが
  更新されていない不整合な状態が発生

実施した対策:
1. "Create and push tag" ステップを追加
   - バージョンアップコミット作成後、タグをローカルで作成
2. "Push version bump commit and tag" ステップを追加
   - バージョンアップコミットを develop ブランチに push
   - タグをリモートリポジトリに push
3. これにより softprops/action-gh-release は既存のタグを使用し、
   正しいコミット(バージョンアップ済み)を指すようになる

効果:
- バージョンアップコミットが develop ブランチに反映される
- タグが正しいバージョンの package.xml を含むコミットを指す
- GitHub Release が正しいバージョン情報を持つ

🤖 Generated with [Claude Code](https://claude.com/claude-code)
テスト用にドライランモードを実装しました。

追加機能:
1. workflow_dispatch に dry_run パラメータを追加
   - ドライランモード(実際のpush・リリースは行わない)
   - デフォルト: false

2. ドライランモード時の動作
   - ワークフロー開始時にドライランモードであることを明示
   - タグ削除: 実行せず、実行予定のコマンドを表示
   - コミット・タグのpush: 実行せず、実行予定のコマンドを表示
   - GitHub Release作成: スキップ

3. ログ出力の改善
   - 通常モード: ✅ マーク付きで実行結果を表示
   - ドライランモード: 🔍 マーク付きで実行予定を表示

効果:
- リモートリポジトリに影響を与えずにワークフローをテスト可能
- ログで実行される予定のコマンドを確認可能
- 安全なワークフロー開発・デバッグが可能

使用方法:
Actions タブから「Auto Version Bump and Release」ワークフローを
手動実行し、dry_run オプションを true に設定

🤖 Generated with [Claude Code](https://claude.com/claude-code)
問題:
ドライランモードでタグ作成時にエラーが発生:
```
fatal: tag '1.0.1' already exists
```

原因:
1. catkin_prepare_release --no-push がタグを作成
2. Amend commit でコミットを修正(git reset --soft HEAD~1)
   → この時点でタグは古いコミット(削除済み)を指している
3. Create and push tag ステップで再度タグ作成を試みてエラー

修正内容:
1. "Create and push tag" ステップを削除
2. "Amend commit with custom message" ステップ内でタグを再作成
   - catkin_prepare_releaseが作成したタグを削除
   - 新しいコミット(修正後)にタグを再作成

処理フロー(修正後):
1. catkin_prepare_release → コミットA + タグ作成
2. Amend commit → コミットAを削除、コミットBを作成
3. タグ削除 → タグを削除
4. タグ再作成 → コミットBにタグを作成
5. Push → コミットBとタグをpush

これにより、タグが正しく新しいコミットを指すようになります。

🤖 Generated with [Claude Code](https://claude.com/claude-code)
@HansRobo HansRobo merged commit 67f2001 into develop Nov 8, 2025
7 checks passed
@HansRobo HansRobo deleted the fix/release-push-commit branch November 8, 2025 05:02
@github-actions
Copy link
Contributor

github-actions bot commented Nov 8, 2025

@github-actions
Copy link
Contributor

github-actions bot commented Nov 8, 2025

@github-actions
Copy link
Contributor

github-actions bot commented Nov 8, 2025

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