前提
私が確認した環境は次の通りです。
GitLab RunnerをインストールしたホストOS: Windows 10, Windows 11
利用したExecutor: docker
タイムアウトで失敗した時の様子
プロジェクトの[設定] > [Runner]の画面では利用可能なRunnerとして問題なく登録されていました。
失敗したジョブを見ると、「There has been a timeout failure or the job got stuck. Check your timeout limits or try again」というエラーメッセージが出ていました。
対処法1
Runnerの設定画面を開き、「タグのないジョブの実行」にチェックを入れる。
私の場合、この対処法で解決しました。
ネット上にもこの方法が結構案内されていたのですが、最初にこの方法で試しても解決しなかったので、違う問題なのではと思っていました。しかし、Runnerを何度も登録し直したせいで、Runnerの設定も変わっていたせいでした。
gitlab-ci.ymlファイルにはどのランナーでCIをまわすか、tagで設定できるのですが、そのtag設定がなくてもジョブを実行できるようにする設定です。そのため、ymlファイルにtagを記述する方法でも解決することができます。
対処法2
WSL2のUbuntuのファイアウォールを無効にする。
# ufw disable
Firewall stopped and disabled on system startup
# ufw status
Status: inactive
ファイアウォールがRunnerとGitLabサーバー間の通信を妨げている場合があるようです。
私の場合は、最初から無効になっていたので関係ありませんでした。
別件で以前、無効にした覚えがあるので、その時から無効になっていたと想います。
対処法3
GitLabのURL設定が間違っている場合があります。
URLがhttpかhttpsかでも接続できるかどうか変わってきます。
また、URLが間違っている場合、次のようなエラーが出ることがあります。
fatal: unable to access '...': Empty reply from server
config.tomlにURLの設定箇所があるので、URLが合っているか確認して修正します。