GitHub Actionsがタイムアウトした時の原因と確認手順
自動公開が時間切れで止まった時、ログ、転送量、接続、timeout設定を初心者向けに切り分けます。
実体験を基に構成SaGaSと運営サイトで行った確認・改善の流れを、初心者向けに整理しています。
- GitHub Actionsの自動公開が途中で止まる
- 25分前後でタイムアウトした実行を直したい
- 制限時間を延ばす前に原因を確認したい
タイムアウトは、決められた時間内にジョブまたは転送処理が終わらなかった状態です。最初にログで止まったステップと最後に進んだ時刻を確認し、転送ファイル数、毎回の全件転送、FTPS接続、サーバー応答を切り分けます。制限時間を延ばすだけでは根本原因が残ります。
- ジョブ全体と各処理のタイムアウトの違い
- ログから止まった場所を見つける方法
- FTP・FTPS自動公開を短く安定させる確認項目
タイムアウトとは何が起きた状態?
GitHub Actionsにはジョブ全体の実行時間を制限するtimeout-minutesがあり、利用するアクション側にも接続や転送の時間制限がある場合があります。どちらが先に止めたかで対処が変わります。
SaGaSでも自動公開が25分付近まで進んで止まった事例をきっかけに、時間を延ばす前にログと転送範囲を確認する手順を整理しました。
最初にログのどこを見る?
失敗した実行を開き、赤くなったジョブとステップを確認します。最後に表示された処理、そこから停止までの時間、警告や再試行の有無を保存します。
チェックアウト、ビルド、検査、FTPS転送のどこで止まったかを分けます。「Actionsが遅い」ではなく「FTPS接続後にファイル一覧取得で止まった」のように場所を特定します。
FTP・FTPS転送で時間がかかる主な原因
初回公開や状態ファイルを使わない設定では、変更していないファイルまで毎回確認・転送することがあります。画像やビルド生成物が多いと、ファイル数が少し増えただけでも通信回数が大きく増えます。
接続の再試行、FTPSの暗号化通信、サーバー側の同時接続制限、応答の遅さも候補です。ログが同じ場所で長く止まるのか、少しずつ進むのかを見ます。
- 公開対象フォルダに不要な生成物が入っていないか
- 大きな画像や重複ファイルが増えていないか
- 毎回全件転送になっていないか
- サーバーの接続数・転送制限に達していないか
- FTPSの接続先・ポート・暗号化方式が正しいか
公開範囲を小さくするには?
会社サイト全体ではなく、更新するフォルダだけをリポジトリと公開対象にします。キャッシュ、ログ、ローカル設定、元画像など公開不要なファイルを除外します。
大きな画像は表示サイズに合わせて圧縮し、同じファイルを複数場所へ置かないよう整理します。差分転送を使う場合は、状態ファイルを消さない運用も確認します。
timeout設定はいつ変える?
通常の転送時間が分かり、処理は正常に進んでいるのに少しだけ上限を超える場合に調整します。ジョブ全体のtimeout-minutesと、転送アクションが持つtimeoutは別の設定です。
極端に長くすると、接続不能や無限待ちに気づくのが遅れます。普段の所要時間に余裕を足し、異常時には止まる値を選びます。
再実行する前に何を変える?
何も変えず一度だけ再実行し、一時的な通信問題かを比べることはできます。繰り返し失敗する場合は、公開対象、画像、接続先、サーバー状態のうち一つずつ変更します。
複数項目を同時に変えると、何が効いたか分からなくなります。実行番号、コミット、所要時間、最後のログを記録し、成功時も通常時間を残します。
秘密情報の扱いで注意すること
FTPユーザー名やパスワードをワークフローファイルへ直接書かず、GitHub ActionsのSecretsへ保存します。ログへ秘密情報を表示する確認コマンドも入れません。
調査のために接続情報を変更した場合は、不要な一時アカウントを削除し、権限を公開フォルダへ限定します。
止まった場所から原因を絞る
最後に成功したステップとログの進み方から、最初の確認先を決めます。
| 今の状況 | 最初の判断 | 理由 |
|---|---|---|
| ビルド前に停止 | 依存関係とコマンドを確認 | 転送ではなく生成処理が終わっていない |
| FTPS接続前に停止 | 接続先とSecretsを確認 | 認証や通信開始で待っている可能性がある |
| 転送が少しずつ進んで停止 | ファイル数とサイズを削減 | 処理量が上限を超えている可能性が高い |
| 毎回違う場所で停止 | 回線とサーバー状態を確認 | 一時的な通信・応答不安定が候補 |
迷ったら、この順番で進めてください
- 01失敗ログを保存
ジョブ、ステップ、最後の行、所要時間を記録する
- 02公開量を数える
ファイル数、合計容量、大きな画像、不要物を確認する
- 03一項目ずつ修正
範囲、接続、差分転送、timeoutを分けて試す
- 04成功時間を基準化
通常の所要時間を残し、急な増加に気づけるようにする
よくある疑問に答えます
timeout-minutesを長くすれば直りますか?
正常に進む処理が少し上限を超える場合には有効ですが、接続不能や全件転送が原因なら再発します。ログと転送量を先に確認します。
再実行で成功したら放置してよいですか?
一時的な通信問題もありますが、通常時間との差を記録し、同じ症状が増えていないか確認します。
Secretsの値をログへ表示して確認してよいですか?
秘密情報をログへ出してはいけません。値そのものではなく、設定名、接続結果、権限範囲を確認します。
この記事の根拠と確認範囲
SaGaSの運用で行った確認手順と、各サービスの公式情報を基に構成しています。管理画面の名称や仕様は変更されるため、実作業前に最新の公式画面も確認してください。
