@@ -34,10 +34,21 @@ update_version() {
3434
3535 # Dockerfile の更新
3636 if [[ " $DRY_RUN " != " true" ]]; then
37- sed -i " s/^ARG MYSQL_SHELL_VERSION=.*/ARG MYSQL_SHELL_VERSION=$new_version /" docker/$type /Dockerfile || {
38- echo " ::warning::Failed to update version in docker/$type /Dockerfile, but continuing..."
39- }
37+ if ! sed -i " s/^ARG MYSQL_SHELL_VERSION=.*/ARG MYSQL_SHELL_VERSION=$new_version /" docker/$type /Dockerfile; then
38+ echo " ::error::Failed to update version in docker/$type /Dockerfile"
39+ echo " このエラーは重要なファイル更新に失敗したため、処理を中断します。"
40+ exit 1
41+ fi
42+
43+ # 更新が成功したか検証
44+ if ! grep -q " ARG MYSQL_SHELL_VERSION=$new_version " docker/$type /Dockerfile; then
45+ echo " ::error::Version update in docker/$type /Dockerfile could not be verified"
46+ echo " Dockerfileの更新内容を確認できないため処理を中断します。"
47+ exit 1
48+ fi
4049 else
50+ # dry runモードではより詳細な情報を表示
51+ echo " dry run: 実行予定のコマンド: sed -i \" s/^ARG MYSQL_SHELL_VERSION=.*/ARG MYSQL_SHELL_VERSION=$new_version /\" docker/$type /Dockerfile"
4152 echo " dry run: docker/$type /Dockerfile 内の ARG MYSQL_SHELL_VERSION=$current_version を $new_version に更新"
4253 fi
4354
@@ -49,15 +60,22 @@ update_version() {
4960 local tag_replace=" snickerjp\/docker-mysql-shell:${short_version} "
5061
5162 if [[ " $DRY_RUN " != " true" ]]; then
52- # 各sedコマンドを個別にエラーハンドリング
53- sed -i " s/$match_pattern /$replace_value /g" README.md || {
54- echo " ::warning::Failed to update Innovation Series version in README.md, but continuing..."
55- }
63+ # READMEの更新は重要だが失敗しても処理は継続する
64+ sed -i " s/$match_pattern /$replace_value /g" README.md
65+ if [ $? -ne 0 ]; then
66+ echo " ::warning::Failed to update Innovation Series version in README.md"
67+ echo " README.mdの更新に失敗しましたが、処理は継続します。"
68+ fi
5669
57- sed -i " s/$tag_pattern /$tag_replace /g" README.md || {
58- echo " ::warning::Failed to update Innovation image tag in README.md, but continuing..."
59- }
70+ sed -i " s/$tag_pattern /$tag_replace /g" README.md
71+ if [ $? -ne 0 ]; then
72+ echo " ::warning::Failed to update Innovation image tag in README.md"
73+ echo " README.mdのタグ更新に失敗しましたが、処理は継続します。"
74+ fi
6075 else
76+ # dry runモードではより詳細な情報を表示
77+ echo " dry run: 実行予定のコマンド: sed -i \" s/$match_pattern /$replace_value /g\" README.md"
78+ echo " dry run: 実行予定のコマンド: sed -i \" s/$tag_pattern /$tag_replace /g\" README.md"
6179 echo " dry run: README.md 内の '$match_pattern ' を '$replace_value ' に更新"
6280 echo " dry run: README.md 内の '$tag_pattern ' を '$tag_replace ' に更新"
6381 fi
@@ -68,36 +86,72 @@ update_version() {
6886 local tag_replace=" snickerjp\/docker-mysql-shell:${short_version} "
6987
7088 if [[ " $DRY_RUN " != " true" ]]; then
71- sed -i " s/$match_pattern /$replace_value /g" README.md || {
72- echo " ::warning::Failed to update LTS Series version in README.md, but continuing..."
73- }
89+ sed -i " s/$match_pattern /$replace_value /g" README.md
90+ if [ $? -ne 0 ]; then
91+ echo " ::warning::Failed to update LTS Series version in README.md"
92+ echo " README.mdの更新に失敗しましたが、処理は継続します。"
93+ fi
7494
75- sed -i " s/$tag_pattern /$tag_replace /g" README.md || {
76- echo " ::warning::Failed to update LTS image tag in README.md, but continuing..."
77- }
95+ sed -i " s/$tag_pattern /$tag_replace /g" README.md
96+ if [ $? -ne 0 ]; then
97+ echo " ::warning::Failed to update LTS image tag in README.md"
98+ echo " README.mdのタグ更新に失敗しましたが、処理は継続します。"
99+ fi
78100 else
101+ # dry runモードではより詳細な情報を表示
102+ echo " dry run: 実行予定のコマンド: sed -i \" s/$match_pattern /$replace_value /g\" README.md"
103+ echo " dry run: 実行予定のコマンド: sed -i \" s/$tag_pattern /$tag_replace /g\" README.md"
79104 echo " dry run: README.md 内の '$match_pattern ' を '$replace_value ' に更新"
80105 echo " dry run: README.md 内の '$tag_pattern ' を '$tag_replace ' に更新"
81106 fi
82107 fi
83108
84- # ワークフローファイルの更新部分を削除
85- # この部分を削除または以下のようにコメントアウト
86- echo " ::notice::ワークフローファイルは手動更新が必要です: .github/workflows/docker-*.yml 内の version: ${major_version} .[x] を version: ${short_version} に更新してください"
109+ # ワークフローファイルの自動更新
110+ local workflow_files=$( find .github/workflows -name " docker-*.yml" 2> /dev/null || echo " " )
111+ if [[ -n " $workflow_files " ]]; then
112+ echo " ワークフローファイルを自動的に更新します..."
113+
114+ local version_pattern=" version: ${major_version} \\ .x"
115+ local version_replace=" version: ${short_version} "
116+
117+ if [[ " $DRY_RUN " != " true" ]]; then
118+ # 各ファイルに対して実行
119+ for workflow_file in $workflow_files ; do
120+ if grep -q " $version_pattern " " $workflow_file " ; then
121+ echo " 更新: $workflow_file "
122+ sed -i " s/$version_pattern /$version_replace /g" " $workflow_file "
123+ if [ $? -ne 0 ]; then
124+ echo " ::warning::Failed to update version in $workflow_file "
125+ echo " ワークフローファイル $workflow_file の更新に失敗しましたが、処理は継続します。"
126+ fi
127+ else
128+ echo " ::info::該当するパターンがないため更新不要: $workflow_file "
129+ fi
130+ done
131+ else
132+ echo " dry run: 以下のファイルを更新予定:"
133+ for workflow_file in $workflow_files ; do
134+ if grep -q " $version_pattern " " $workflow_file " ; then
135+ echo " dry run: $workflow_file 内の '$version_pattern ' を '$version_replace ' に更新"
136+ echo " dry run: 実行予定のコマンド: sed -i \" s/$version_pattern /$version_replace /g\" \" $workflow_file \" "
137+ fi
138+ done
139+ fi
140+
141+ # PR説明文にワークフローファイル更新の旨を追加
142+ PR_BODY=" ${PR_BODY} (ワークフローファイルも自動的に更新されました)"
143+ else
144+ echo " ::warning::ワークフローファイルが見つかりませんでした。"
145+ fi
87146
88147 # PR本文に変更内容を追加(整形された形式で)
89148 PR_BODY=" ${PR_BODY}
90149
91150### ${type^} バージョン更新
92- * **${current_version} ** → **${new_version} **
93- * ℹ️ ワークフローファイル(.github/workflows/docker-*.yml)は手動で更新する必要があります"
151+ * **${current_version} ** → **${new_version} **"
94152
95- # 更新が成功したか確認
96- if [[ " $DRY_RUN " != " true" ]]; then
97- if ! grep -q " ARG MYSQL_SHELL_VERSION=$new_version " docker/$type /Dockerfile; then
98- echo " ::warning::Version update in docker/$type /Dockerfile might have failed, but we'll continue..."
99- fi
100- fi
153+ # 成功ログ
154+ echo " ✅ $type のバージョン更新が完了しました"
101155}
102156
103157# Innovation の更新
113167# PR本文に必要な手順を追加
114168PR_BODY=" ${PR_BODY}
115169
116- ## ⚠️ 必要な手動アクション
117- 1. このPRをマージする前に、ワークフローファイル(.github/workflows/docker-*.yml)を手動で更新してください
118- 2. メジャー・マイナーバージョン番号の記述を正確に更新してください"
170+ ## 更新内容
171+ - Dockerfileのバージョン番号更新
172+ - README.mdのバージョン表記を更新
173+ - ワークフローファイルを自動的に更新
174+
175+ ## ⚠️ 注意事項
176+ 1. ワークフローファイルの自動更新が行われていない場合は手動で更新してください
177+ 2. マージ前に各ファイルの更新内容を確認してください"
119178
120179# 変更をコミットしてプッシュ
121180changed_files=$( git status --porcelain | awk ' {print $2}' )
0 commit comments