AWS Amplify Hosting で大量のプルリクエストを連続マージした時、ビルドは何回走るのか確認してみた
いわさです。
先日、Kiro Web のオートメーションと Amplify Gen 2 の PR プレビュー機能を組み合わせて、寝ている間に AI が Issue を処理して PR を出してくれる仕組みを紹介しました。
また、デフォルトの buildSpec を見直してビルド時間を短縮する記事も書きました。
ビルド1回あたりの時間は短縮できたのですが、次に気になるのはビルド回数です。
この仕組みだと、朝起きたら PR が複数溜まっている状態になります。
動作確認して問題なければ次々とマージしていくわけですが、ふと気になりました。
Amplify Hosting は Git リポジトリへのプッシュをトリガーに自動ビルドが走るので、PR を6本マージしたら6回ビルドが走るのか?と。
結論から言うと、6回ではなく2回しか走りませんでした。
同一ブランチに対しては、待機中のビルドが最新のコミットに差し替わる挙動になっているようです。
確認してみたので紹介します。
実際に確認してみる
PR を6本、10分ほどの間に連続してマージしてみました。
GitHub のコミット履歴を見ると、短時間に連続してマージコミットが積まれています。

PR #188, #192, #195, #193, #190, #194 の6本が数分以内にマージされています。
さて、Amplify のデプロイ履歴を確認してみましょう。

デプロイ 89 が「Merge pull request #190」で実行中です。
そしてデプロイ 87(#187)と 88(Delete amplify.yml)は手動でキャンセルしたものなので、今回の連続マージとは関係ありません。
ポイントは、6本のPRマージに対してデプロイが89と90の2つしか作成されていないことです。
次のデプロイが待機状態になると、その間に来た新しいコミットで差し替わるようです。
デプロイ 90 を見てみると、「Merge pull request #188」のコミットメッセージで開始されています。

最終的にデプロイ 90 が完了し、8分18秒で終わりました。

結果の整理
6本の PR をマージした結果、ビルドは 2回 しか走りませんでした。
それぞれの PR がどのデプロイに含まれたかを整理します。
| PR | マージ順 | Amplify での扱い |
|---|---|---|
| #194 | 1番目(11分前) | デプロイ 89 に含まれる |
| #190 | 2番目(10分前) | デプロイ 89 のトリガー(この時点の HEAD でビルド開始) |
| #193 | 3番目(3分前) | デプロイ 90 に集約 |
| #195 | 4番目(1分前) | デプロイ 90 に集約 |
| #192 | 5番目(1分前) | デプロイ 90 に集約 |
| #188 | 6番目(1分前) | デプロイ 90 のトリガー(最終 HEAD でビルド開始) |
デプロイ 89 が実行中の間に #193, #195, #192, #188 が次々とマージされました。
これらはそれぞれビルドキューに入ってくるのですが、待機中のビルドは新しいコミットが来るたびに差し替わっていきます。
結果として #193, #195, #192 は個別にビルドされることなく、最後にマージした #188 のビルド1回に集約されました。
| デプロイ | コミットメッセージ | 結果 |
|---|---|---|
| デプロイ 87 | Merge pull request #187 | キャンセル(手動) |
| デプロイ 88 | Delete amplify.yml | キャンセル(手動) |
| デプロイ 89 | Merge pull request #190 | 成功(9分6秒) |
| デプロイ 90 | Merge pull request #188 | 成功(8分18秒) |
なお、デプロイ 87/88 は手動でキャンセルしたもので、今回の連続マージによる挙動とは無関係です。
どうやら同一ブランチに対する Amplify の挙動としては以下のようです。
ドキュメントでこの挙動が明記されているかは確認できていないのですが、検証結果から推察しています。
- ビルドが実行中の場合、そのビルドはそのまま走り続ける(途中キャンセルはされない)
- ビルド実行中にマージされたコミットはビルドキューに入るが、待機中のビルドは新しいコミットが来るたびに最新のものに差し替わる
- 結果として同一ブランチに対しては「実行中のビルド1つ + 待機中のビルド最大1つ」に収まる
つまり、短期間に連続してマージしても、実行中のビルドが完了するまでに積まれたコミットは最終的に1回のビルドに集約されます。
さいごに
本日は AWS Amplify Hosting で大量の PR を連続マージした時にビルドが何回走るのか確認してみました。
PR 6本マージしてビルド2回で済んだので、ビルド料金的にも助かります。
AI に大量の PR を作らせて朝まとめてマージする運用だと、この挙動はありがたいですね。








