記事一覧へ

時短のためにテストとビルドを同時に走らせたら、やり直しになった

このサイトの更新中に起きた、小さな並列化の失敗。二つの処理が同じ生成ファイルを触っていた。

このサイトに記事を追加して、Codexでテストと本番向けビルドを確認していたときの話です。

テストとビルドを同時に実行しました。待ち時間を減らせそうな組み合わせです。

結果は、テスト50件成功。ビルド失敗。

速く終わる予定だった確認に、失敗の確認が一つ増えました。

同じ引き出しを、二人で閉めていた

ビルド側のエラーはENOENTでした。ファイルがない、というエラーです。Astroが生成する一時ファイルを、正式なファイル名へ変更するところで失敗していました。

記事を書き足しただけなのに、なぜ生成ファイルがなくなるのか。

このプロジェクトでは、テスト前の処理にもastro syncが入っています。一方、ビルドもコンテンツを同期して生成ファイルを用意します。同じ作業ディレクトリで同時に走らせたので、両方が.astroの生成物を触っていました。

コマンドが二つあっても、作業場所まで二つあるわけではありませんでした。

順番に実行したら通った

テストを終えてから、ビルドを単独で実行し直しました。今度は成功。本文を直す必要はありませんでした。

並列化したかったのは、待ち時間です。生成ファイルの取り合いを見たかったわけではないのですが、結果としてはそちらの観察ができました。

なお、このサイトには保存処理を繰り返したら失敗した話もあります。アプリ側の再送を直した記録を載せながら、公開準備では別の競合を起こしていました。題材には困りません。

同じ作業場所を使うテストとビルドは、今後は順番に実行します。この記事のビルドも、その順番です。