Skip to content

fix: auto-releaseワークフローのsedエラーを修正#9

Merged
ph2684 merged 1 commit intomainfrom
fix/auto-release-sed-error
Sep 10, 2025
Merged

fix: auto-releaseワークフローのsedエラーを修正#9
ph2684 merged 1 commit intomainfrom
fix/auto-release-sed-error

Conversation

@ph2684
Copy link
Owner

@ph2684 ph2684 commented Sep 10, 2025

概要

auto-releaseワークフローで発生していたsedエラーを修正します。

問題

PR #8で導入したauto-releaseワークフローが以下のエラーで失敗していました:

sed: -e expression #1, char 96: unterminated 's' command

失敗したワークフロー: Run #17603301677

原因

changelog生成時にsedコマンドで変数置換を行う際、コミットメッセージに含まれる特殊文字(/, ', ", 改行等)がsedの区切り文字と衝突していました。

# 問題のあるコード
sed -i "s|\$CHANGELOG|$CHANGELOG|g" changelog.md

解決策

✅ 修正内容

  • sed による変数置換を廃止
  • 直接ファイル操作でchangelog.mdを生成
  • 一時ファイル使用で特殊文字を安全に処理
# 修正後のコード  
git log ${LATEST_TAG}..HEAD --pretty=format:"- %s (%h)" --no-merges > changelog_temp.txt
echo "## What's Changed" > changelog.md
cat changelog_temp.txt >> changelog.md

🔒 安全性の向上

  • 特殊文字によるコマンドインジェクションを防止
  • シェル変数展開の問題を回避
  • より確実なchangelog生成処理

テスト

この修正により、以下のような問題のあるコミットメッセージでもワークフローが正常に動作します:

  • fix: "quoted strings" and /path/names
  • feat: multi-line\ncommit messages
  • docs: special chars like $VAR and \code``

関連PR

🤖 Generated with Claude Code

changelog生成時の文字エスケープ問題を解決:

問題:
- sedコマンドでchangelog変数を置換する際に特殊文字でエラー
- `sed: -e expression #1, char 96: unterminated 's' command`

解決策:
- sed による変数置換を廃止
- 直接ファイル操作でchangelog.mdを生成
- 一時ファイル(changelog_temp.txt)を使用して安全に処理

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
@ph2684 ph2684 merged commit a4cf095 into main Sep 10, 2025
1 check passed
@ph2684 ph2684 deleted the fix/auto-release-sed-error branch September 10, 2025 04:38
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