【Github】Github Actions ~ Self-hosted runners で Offline だった場合の対応について考える ~

◾️はじめに

 年末の休みに入る前にCI/CDが動かなくなった。
確認してみると、Self-hosted runner が Offline だった。
そこで、Self-hosted runner で Offline だった場合の対応について考える

目次

【1】Offlineがどういう状態か
 1)Offlineになる要因
【2】切り分け方法について考える
 1)要因「Self-hosted runner 自身が起動していない」について
 2)要因「Self-hosted runner上のRunnerサービスが起動していない」について
 3)要因「Self-hosted runner上のRunnerサービスがGitHubと連携できていない」について

【1】Offlineがどういう状態か

まずは、Self-hosted runner において、
Offline がどういう状態であるかを考える。

そのために、公式ドキュメントの定義を見てみる

https://docs.github.com/ja/actions/hosting-your-own-runners/managing-self-hosted-runners/monitoring-and-troubleshooting-self-hosted-runners#checking-the-status-of-a-self-hosted-runner

より抜粋
~~~~~~~~~~
The runner is not connected to GitHub.
Runner が GitHub に接続されていません

This could be because the machine is offline,
 the self-hosted runner application is not running on the machine,
 or the self-hosted runner application cannot communicate with GitHub.
これは、そのマシンがOfflineであるか
Self-hosted runner アプリケーションがマシン上で起動していないか
Self-hosted runner アプリケーションがGitHubに対して、コミュニケーションが取れていないか
が原因である。
~~~~~~~~~~

1)Offlineになる要因

* 上記の公式ドキュメントを踏まえて、Offlineになる要因は
 以下の3つが考えられる。

1)Self-hosted runner 自身が起動していない
2)Self-hosted runner上のRunnerサービスが起動していない
3)Self-hosted runner上のRunnerサービスがGitHubと連携できていない

【2】切り分け方法について考える

1)要因「Self-hosted runner 自身が起動していない」について

切り分け方法

* これは確かめるのは簡単で、例えば、
 Self-hosted runner がAWS EC2上の場合、そのEC2がRunningであるかを確認する

2)要因「Self-hosted runner上のRunnerサービスが起動していない」について

切り分け方法

# Step0: Runnerサービスの状況を調べる
$ ./config.sh status
# Runningだったら、3)。Failedだったら、「要因特定」で原因を調査する

要因特定
https://docs.github.com/ja/actions/hosting-your-own-runners/managing-self-hosted-runners/monitoring-and-troubleshooting-self-hosted-runners#checking-the-status-of-a-self-hosted-runner

# Step1: Service名を調べる
$ systemctl --type=service | grep actions.runner
actions.runner.octo-org-octo-repo.hostname.service loaded active running GitHub Actions Runner (octo-org-octo-repo.hostname)

# Step2: Runnerサービスの状況を調べる
$ sudo journalctl -u actions.runner.octo-org-octo-repo.runner01.service

補足:journalctl について

* 以下の関連記事を参照のこと

systemd 〜 journalctl 〜
https://dk521123.hatenablog.com/entry/2025/01/01/012049

3)要因「Self-hosted runner上のRunnerサービスがGitHubと連携できていない」について

* 原因は、AWSの場合、通信(VPCなど)関連が考えられる

関連記事

Github Actions ~ Self-hosted runners / 入門編 ~
https://dk521123.hatenablog.com/entry/2023/12/18/204119
Github Actions ~ Self-hosted runners / あれこれ編 ~
https://dk521123.hatenablog.com/entry/2024/02/07/002736
Self-hosted runner下の Github actions が突然エラー
https://dk521123.hatenablog.com/entry/2024/07/05/000212
Self-hosted Runner in CodeBuild ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2025/01/02/012254
systemd 〜 journalctl 〜
https://dk521123.hatenablog.com/entry/2025/01/01/012049