5252 go test -v ./benchmark -run TestQueryOptimizerBenchmark -timeout 10m | tee benchmark_output.txt
5353 echo "✅ ベンチマーク完了"
5454
55- - name : Parse benchmark results
55+ - name : Create benchmark summary
5656 if : always()
5757 run : |
5858 echo "📊 ベンチマーク結果解析中..."
@@ -66,43 +66,49 @@ jobs:
6666 echo "BENCHMARK_JSON_EXISTS=false" >> $GITHUB_ENV
6767 fi
6868
69- # テキスト出力から主要統計を抽出
69+ # GitHub Actions Summary に結果を出力
7070 if [ -f "benchmark_output.txt" ]; then
71- echo "## 📈 クエリオプティマイザー ベンチマーク結果" > benchmark_summary.md
72- echo "" >> benchmark_summary.md
71+ echo "## 📈 クエリオプティマイザー ベンチマーク結果" >> $GITHUB_STEP_SUMMARY
72+ echo "" >> $GITHUB_STEP_SUMMARY
7373
7474 # 成功率抽出
7575 SUCCESS_RATE=$(grep -o "実行成功率: [0-9/]* ([0-9.]*%)" benchmark_output.txt || echo "成功率情報なし")
7676 if [ "$SUCCESS_RATE" != "成功率情報なし" ]; then
77- echo "✅ **$SUCCESS_RATE**" >> benchmark_summary.md
78- echo "" >> benchmark_summary.md
77+ echo "✅ **$SUCCESS_RATE**" >> $GITHUB_STEP_SUMMARY
78+ echo "" >> $GITHUB_STEP_SUMMARY
7979 fi
8080
8181 # 改善度抽出
8282 AVG_IMPROVEMENT=$(grep -o "平均実行時間改善: [0-9.]*x" benchmark_output.txt || echo "")
8383 MAX_IMPROVEMENT=$(grep -o "最大実行時間改善: [0-9.]*x" benchmark_output.txt || echo "")
8484
8585 if [ -n "$AVG_IMPROVEMENT" ] || [ -n "$MAX_IMPROVEMENT" ]; then
86- echo "### 🎯 パフォーマンス改善度" >> benchmark_summary.md
86+ echo "### 🎯 パフォーマンス改善度" >> $GITHUB_STEP_SUMMARY
8787 if [ -n "$AVG_IMPROVEMENT" ]; then
88- echo "- ⚡ $AVG_IMPROVEMENT" >> benchmark_summary.md
88+ echo "- ⚡ $AVG_IMPROVEMENT" >> $GITHUB_STEP_SUMMARY
8989 fi
9090 if [ -n "$MAX_IMPROVEMENT" ]; then
91- echo "- 🚀 $MAX_IMPROVEMENT" >> benchmark_summary.md
91+ echo "- 🚀 $MAX_IMPROVEMENT" >> $GITHUB_STEP_SUMMARY
9292 fi
93- echo "" >> benchmark_summary.md
93+ echo "" >> $GITHUB_STEP_SUMMARY
9494 fi
9595
96- # 詳細なテーブル結果を抽出
97- echo "### 📋 詳細結果" >> benchmark_summary.md
98- echo '```' >> benchmark_summary.md
99- # Query結果のセクションを抽出
100- sed -n '/📋Query/,/📈全体統計/p' benchmark_output.txt | head -n -2 >> benchmark_summary.md
101- echo '```' >> benchmark_summary.md
102- echo "" >> benchmark_summary.md
96+ # 詳細なテーブル結果を抽出(最初の2クエリのみ)
97+ echo "### 📋 詳細結果(抜粋)" >> $GITHUB_STEP_SUMMARY
98+ echo '```' >> $GITHUB_STEP_SUMMARY
99+ sed -n '/📋Query1/,/📋Query3/p' benchmark_output.txt | head -n -1 >> $GITHUB_STEP_SUMMARY
100+ echo '```' >> $GITHUB_STEP_SUMMARY
101+ echo "" >> $GITHUB_STEP_SUMMARY
103102
104- echo "Generated benchmark summary:"
105- cat benchmark_summary.md
103+ echo "### 📊 ダウンロード" >> $GITHUB_STEP_SUMMARY
104+ echo "完全な結果はArtifacts からダウンロードできます" >> $GITHUB_STEP_SUMMARY
105+
106+ # ファイルにも保存(Artifact用)
107+ cp $GITHUB_STEP_SUMMARY benchmark_summary.md 2>/dev/null || echo "Summary copy failed"
108+
109+ echo "Generated benchmark summary for Actions"
110+ else
111+ echo "❌ ベンチマーク出力ファイルが見つかりません" >> $GITHUB_STEP_SUMMARY
106112 fi
107113
108114 - name : Upload benchmark results
@@ -115,62 +121,3 @@ jobs:
115121 benchmark-results.json
116122 benchmark_summary.md
117123 retention-days : 30
118-
119- - name : Comment benchmark results on PR
120- if : github.event_name == 'pull_request' && always()
121- uses : actions/github-script@v7
122- with :
123- script : |
124- const fs = require('fs');
125-
126- let comment = '## 🚀 クエリオプティマイザー ベンチマーク結果\n\n';
127-
128- try {
129- // benchmark_summary.mdを読み込み
130- if (fs.existsSync('benchmark_summary.md')) {
131- const summary = fs.readFileSync('benchmark_summary.md', 'utf8');
132- comment += summary;
133- } else {
134- comment += '❌ ベンチマーク結果の解析に失敗しました。\n\n';
135- comment += '詳細は [Actions ログ](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) を確認してください。';
136- }
137-
138- comment += '\n\n---\n';
139- comment += `🔗 [完全な実行ログを確認](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})\n`;
140- comment += `📊 実行日時: ${new Date().toLocaleString('ja-JP', { timeZone: 'Asia/Tokyo' })}`;
141-
142- } catch (error) {
143- comment += `❌ エラーが発生しました: ${error.message}\n\n`;
144- comment += '詳細は Actions ログを確認してください。';
145- }
146-
147- // PRにコメント
148- await github.rest.issues.createComment({
149- issue_number: context.issue.number,
150- owner: context.repo.owner,
151- repo: context.repo.repo,
152- body: comment
153- });
154-
155- - name : Post benchmark summary to commit
156- if : github.event_name == 'push' && always()
157- uses : actions/github-script@v7
158- with :
159- script : |
160- const fs = require('fs');
161-
162- let summary = '🚀 クエリオプティマイザー ベンチマーク完了\n\n';
163-
164- try {
165- if (fs.existsSync('benchmark_summary.md')) {
166- const content = fs.readFileSync('benchmark_summary.md', 'utf8');
167- // Markdown形式からプレーンテキスト形式に変換(コミット用)
168- summary += content.replace(/###? /g, '').replace(/\*\*/g, '').replace(/```[\s\S]*?```/g, '[詳細はActionログを確認]');
169- } else {
170- summary += '❌ ベンチマーク解析失敗';
171- }
172- } catch (error) {
173- summary += `❌ エラー: ${error.message}`;
174- }
175-
176- console.log('Benchmark Summary:', summary);
0 commit comments