Skip to content

Commit d78e46c

Browse files
committed
fix: enhance post-message and update scripts for MySQL Shell version updates
1 parent 9cf9b89 commit d78e46c

File tree

3 files changed

+107
-37
lines changed

3 files changed

+107
-37
lines changed

.github/check-new-release/scripts/post-message.sh

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,15 @@ set -eu
44

55
# DRY_RUNがtrueでない場合のみ実行
66
if [[ "$DRY_RUN" != "true" ]]; then
7-
echo "::group::ワークフローファイル更新手順"
8-
echo "PR #xxx が作成されました。次に手動でワークフローファイルを更新してください。"
7+
echo "::group::PR作成完了"
8+
echo "✅ MySQLシェルバージョン更新のPRが作成されました。"
9+
echo ""
10+
echo "ワークフローファイルは自動的に更新されましたが、念のため確認してください。"
11+
echo "万一、自動更新が失敗した場合は、以下の手順で手動更新が可能です:"
12+
echo ""
13+
echo "::endgroup::"
14+
15+
echo "::group::ワークフローファイル更新手順(バックアップ)"
916
echo "1. PRブランチをローカルにチェックアウト:"
1017
echo " git fetch origin $BRANCH_NAME && git checkout $BRANCH_NAME"
1118
echo ""

.github/check-new-release/scripts/update.sh

Lines changed: 89 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -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 の更新
@@ -113,9 +167,14 @@ fi
113167
# PR本文に必要な手順を追加
114168
PR_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
# 変更をコミットしてプッシュ
121180
changed_files=$(git status --porcelain | awk '{print $2}')
Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
Automated update for MySQL Shell versions.
22

3-
## Changes:
3+
## 更新内容
44

55
### {{TYPE}} バージョン更新
66
* **{{CURRENT_VERSION}}****{{NEW_VERSION}}**
7-
* ℹ️ ワークフローファイル(.github/workflows/docker-*.yml)は手動で更新する必要があります
87

9-
## ⚠️ 必要な手動アクション
10-
1. このPRをマージする前に、ワークフローファイル(.github/workflows/docker-*.yml)を手動で更新してください
11-
2. メジャー・マイナーバージョン番号の記述を正確に更新してください
8+
## 更新済みファイル
9+
- Dockerfileのバージョン番号更新
10+
- README.mdのバージョン表記を更新
11+
- ワークフローファイルの自動更新
12+
13+
## ⚠️ 注意事項
14+
1. ワークフローファイルの自動更新が行われていない場合は手動で更新してください
15+
2. マージ前に各ファイルの更新内容を確認してください

0 commit comments

Comments
 (0)