Skip to content

Commit 9cf9b89

Browse files
committed
split message file for PR
make simple for YAML file
1 parent c61dfd1 commit 9cf9b89

File tree

4 files changed

+232
-207
lines changed

4 files changed

+232
-207
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# !/bin/bash (実行権限を付与せずbashコマンドで実行されるため実際には使用されない)
2+
# 厳格モードを設定
3+
set -eu
4+
5+
# DRY_RUNがtrueでない場合のみ実行
6+
if [[ "$DRY_RUN" != "true" ]]; then
7+
echo "::group::ワークフローファイル更新手順"
8+
echo "PR #xxx が作成されました。次に手動でワークフローファイルを更新してください。"
9+
echo "1. PRブランチをローカルにチェックアウト:"
10+
echo " git fetch origin $BRANCH_NAME && git checkout $BRANCH_NAME"
11+
echo ""
12+
echo "2. 以下のコマンドでワークフローファイルを更新:"
13+
14+
# Innovation更新の場合
15+
if [[ "$INNOVATION_UPDATE_NEEDED" == "true" ]]; then
16+
INNOVATION_MAJOR=$(echo "$LATEST_INNOVATION" | cut -d. -f1)
17+
INNOVATION_MINOR=$(echo "$LATEST_INNOVATION" | cut -d. -f2)
18+
INNOVATION_SHORT="${INNOVATION_MAJOR}.${INNOVATION_MINOR}"
19+
echo " # Innovation更新コマンド:"
20+
echo " find .github/workflows -name \"docker-*.yml\" -exec sed -i 's/version: ${INNOVATION_MAJOR}\\.x/version: ${INNOVATION_SHORT}/g' {} \\;"
21+
fi
22+
23+
# LTS更新の場合
24+
if [[ "$LTS_UPDATE_NEEDED" == "true" ]]; then
25+
LTS_MAJOR=$(echo "$LATEST_LTS" | cut -d. -f1)
26+
LTS_MINOR=$(echo "$LATEST_LTS" | cut -d. -f2)
27+
LTS_SHORT="${LTS_MAJOR}.${LTS_MINOR}"
28+
echo " # LTS更新コマンド:"
29+
echo " find .github/workflows -name \"docker-*.yml\" -exec sed -i 's/version: ${LTS_MAJOR}\\.x/version: ${LTS_SHORT}/g' {} \\;"
30+
fi
31+
32+
echo ""
33+
echo "3. 変更をコミット:"
34+
echo " git add .github/workflows/"
35+
echo " git commit -m \"Update workflow files for MySQL Shell versions\""
36+
echo ""
37+
echo "4. 変更をプッシュ:"
38+
echo " git push origin $BRANCH_NAME"
39+
echo ""
40+
echo "これで既存のPRにワークフロー更新が追加されます。"
41+
echo "::endgroup::"
42+
fi
Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
# !/bin/bash (実行権限を付与せずbashコマンドで実行されるため実際には使用されない)
2+
# 厳格モードを設定
3+
set -eu
4+
5+
# dry runモードを確認
6+
if [[ "$DRY_RUN" == "true" ]]; then
7+
echo "::notice::dry runモードで実行しています。実際の変更は行いません。"
8+
fi
9+
10+
# ブランチ作成
11+
BRANCH_NAME="bot/update-mysql-shell-$(date +%Y%m%d%H%M%S)"
12+
if [[ "$DRY_RUN" != "true" ]]; then
13+
git config --global user.name 'github-actions[bot]'
14+
git config --global user.email 'github-actions[bot]@users.noreply.github.com'
15+
git checkout -b $BRANCH_NAME
16+
else
17+
echo "dry run: git checkout -b $BRANCH_NAME"
18+
fi
19+
20+
# PR本文の初期化
21+
PR_TEMPLATE=$(cat .github/check-new-release/templates/pr.md)
22+
PR_BODY=""
23+
24+
# バージョン更新関数
25+
update_version() {
26+
local type=$1
27+
local current_version=$2
28+
local new_version=$3
29+
local major_version=$(echo "$new_version" | cut -d. -f1)
30+
local minor_version=$(echo "$new_version" | cut -d. -f2)
31+
local short_version="${major_version}.${minor_version}"
32+
33+
echo "Updating $type to $new_version (major.minor: $short_version)..."
34+
35+
# Dockerfile の更新
36+
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+
}
40+
else
41+
echo "dry run: docker/$type/Dockerfile 内の ARG MYSQL_SHELL_VERSION=$current_version$new_version に更新"
42+
fi
43+
44+
# README.md の更新
45+
if [[ "$type" == "innovation" ]]; then
46+
local match_pattern="Innovation Series ([0-9]\\.[0-9]\\.[x0-9])"
47+
local replace_value="Innovation Series (${major_version}.${minor_version}.x)"
48+
local tag_pattern="snickerjp\/docker-mysql-shell:${major_version}\\.[0-9]"
49+
local tag_replace="snickerjp\/docker-mysql-shell:${short_version}"
50+
51+
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+
}
56+
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+
}
60+
else
61+
echo "dry run: README.md 内の '$match_pattern' を '$replace_value' に更新"
62+
echo "dry run: README.md 内の '$tag_pattern' を '$tag_replace' に更新"
63+
fi
64+
else
65+
local match_pattern="LTS Series ([0-9]\\.[0-9]\\.[x0-9])"
66+
local replace_value="LTS Series (${major_version}.${minor_version}.x)"
67+
local tag_pattern="snickerjp\/docker-mysql-shell:${major_version}\\.[0-9]"
68+
local tag_replace="snickerjp\/docker-mysql-shell:${short_version}"
69+
70+
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+
}
74+
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+
}
78+
else
79+
echo "dry run: README.md 内の '$match_pattern' を '$replace_value' に更新"
80+
echo "dry run: README.md 内の '$tag_pattern' を '$tag_replace' に更新"
81+
fi
82+
fi
83+
84+
# ワークフローファイルの更新部分を削除
85+
# この部分を削除または以下のようにコメントアウト
86+
echo "::notice::ワークフローファイルは手動更新が必要です: .github/workflows/docker-*.yml 内の version: ${major_version}.[x] を version: ${short_version} に更新してください"
87+
88+
# PR本文に変更内容を追加(整形された形式で)
89+
PR_BODY="${PR_BODY}
90+
91+
### ${type^} バージョン更新
92+
* **${current_version}** → **${new_version}**
93+
* ℹ️ ワークフローファイル(.github/workflows/docker-*.yml)は手動で更新する必要があります"
94+
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
101+
}
102+
103+
# Innovation の更新
104+
if [[ "$INNOVATION_UPDATE_NEEDED" == "true" ]]; then
105+
update_version "innovation" "$CURRENT_INNOVATION" "$LATEST_INNOVATION"
106+
fi
107+
108+
# LTS の更新
109+
if [[ "$LTS_UPDATE_NEEDED" == "true" ]]; then
110+
update_version "lts" "$CURRENT_LTS" "$LATEST_LTS"
111+
fi
112+
113+
# PR本文に必要な手順を追加
114+
PR_BODY="${PR_BODY}
115+
116+
## ⚠️ 必要な手動アクション
117+
1. このPRをマージする前に、ワークフローファイル(.github/workflows/docker-*.yml)を手動で更新してください
118+
2. メジャー・マイナーバージョン番号の記述を正確に更新してください"
119+
120+
# 変更をコミットしてプッシュ
121+
changed_files=$(git status --porcelain | awk '{print $2}')
122+
if [[ -z "$changed_files" ]]; then
123+
echo "No changes to commit."
124+
exit 0
125+
fi
126+
127+
# ファイルの変更をチェック
128+
echo "Changed files:"
129+
for file in $changed_files; do
130+
echo "- $file"
131+
done
132+
133+
# すべての変更をステージング
134+
if [[ "$DRY_RUN" != "true" ]]; then
135+
git add $changed_files
136+
git commit -m "Update MySQL Shell versions (Innovation: $LATEST_INNOVATION, LTS: $LATEST_LTS)"
137+
138+
# エラーハンドリング付きでプッシュ
139+
if ! git push origin $BRANCH_NAME; then
140+
echo "::error::Failed to push changes to GitHub"
141+
exit 1
142+
fi
143+
144+
# プルリクエストを作成
145+
if ! gh pr create \
146+
--base develop \
147+
--head $BRANCH_NAME \
148+
--title "Update MySQL Shell versions (Innovation: $LATEST_INNOVATION, LTS: $LATEST_LTS)" \
149+
--body "$PR_BODY"; then
150+
echo "::error::Failed to create Pull Request"
151+
exit 1
152+
fi
153+
154+
echo "Pull request created successfully!"
155+
else
156+
echo "dry run: 以下のファイルが変更されます:"
157+
for file in $changed_files; do
158+
echo "- $file"
159+
done
160+
echo "dry run: コミットメッセージ: Update MySQL Shell versions (Innovation: $LATEST_INNOVATION, LTS: $LATEST_LTS)"
161+
echo "dry run: PR作成: タイトル: Update MySQL Shell versions (Innovation: $LATEST_INNOVATION, LTS: $LATEST_LTS)"
162+
echo "dry run: PR本文:"
163+
echo -e "$PR_BODY"
164+
echo "dry run終了: 実際の変更は行われていません。"
165+
fi
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
Automated update for MySQL Shell versions.
2+
3+
## Changes:
4+
5+
### {{TYPE}} バージョン更新
6+
* **{{CURRENT_VERSION}}****{{NEW_VERSION}}**
7+
* ℹ️ ワークフローファイル(.github/workflows/docker-*.yml)は手動で更新する必要があります
8+
9+
## ⚠️ 必要な手動アクション
10+
1. このPRをマージする前に、ワークフローファイル(.github/workflows/docker-*.yml)を手動で更新してください
11+
2. メジャー・マイナーバージョン番号の記述を正確に更新してください

0 commit comments

Comments
 (0)