Forgejo・Gitea の Actions の「No matching online runner with label」
「そのラベルを持つランナーが、いまオンラインに1台もない」という意味です。ジョブは runs-on にラベルを書いていますが、いまつながっているランナーのどれもそのラベルを持っていません。Forgejo・Gitea はこのジョブを失敗にしません。runs-on のラベルを全部持つランナーがオンラインになるか、誰かが取り消すまで、待ちのままです。ランナーにそのラベルを足すか、そのラベルを持つランナーを動かすか、runs-on を手元のランナーにあるラベルに直します。
文の出る場所
文は両方とも同じで、最後にラベルが入ります。
No matching online runner with label: ubuntu-latest
- Gitea(最新の版 28.2.0〈2026年10月18日〉で確認):実行の一覧で、実行の横に赤い警告のアイコンが出て、指を合わせるとこの文が出ます。実行のジョブが待っていて、止められていないオンラインのランナーのどれも、そのジョブのラベルを全部は持っていないときです(actions.go・runs_list.tmpl)。待っているジョブのページは3つを見分けます。ランナーが1台もオンラインでなければ「No runner is online to pick up this job.」、オンラインのランナーはあるがラベルが合わなければこの文、ラベルの合うランナーがオンラインで手がふさがっていれば「Waiting for a matching runner to become available.」です(view.go)。
- Forgejo:Actions のタブの左のワークフローの一覧で、ワークフローの横に赤い警告のアイコンが出ます。
runs-onの値のうち、どのオンラインのランナーも持っていない最初の1つを示します。式(${{ }})を含む値は調べないので、ラベルを式で決めるジョブは、この警告なしに待ちます(actions.go・list_inner.tmpl)。
API では、エラーはまったく出ません。ジョブは Gitea では queued、Forgejo では waiting のままです。Gitea はジョブが求めるラベルも、ジョブの labels として返します(repo_actions.go)。
ランナーとジョブの合わせ方
- ランナーがジョブを取るのは、ジョブのラベルを全部持っているときだけです。
runs-on: [self-hosted, linux]なら、両方を持つランナーが1台要ります(Gitea の CanMatchLabels・Forgejo の ItRunsOn)。 - Gitea は大文字と小文字を区別せずに比べます。Forgejo はそのまま比べるので、
Ubuntu-latestとubuntu-latestは別のラベルです。 - ラベルは、コロンの前の名前です。
ubuntu-latest:docker://node:24と設定したランナーのラベルはubuntu-latestで、後ろはジョブをどこで動かすかです(Gitea・Forgejo)。 - オンラインとは、ランナーがこの1分以内にサーバーと話したことです(両方とも
RunnerOfflineTime)。止まっているランナーや、サーバーに届かないランナーは数えません。 - 数えるのは、そのリポジトリ・その持ち主(ユーザーか組織)・サーバー全体のランナーです。別のリポジトリや組織に登録したランナーは、このジョブを取りません(Forgejo の登録の説明)。
ジョブを動かす
- ランナーとそのラベル・状態を見る:リポジトリの Settings(設定)→ Actions → Runners(ランナー)。住所は
/{owner}/{repository}/settings/actions/runnersです。一覧には、持ち主とサーバーのランナーも入ります。組織は/org/{org}/settings/actions/runners、自分のアカウントは/user/settings/actions/runners、サーバーの管理者は/admin/actions/runnersに同じページがあります。ランナーごとに Idle(空き)・Active(実行中)・Offline と、ラベルが出ます(Gitea も同じページ)。 - ラベルはあるが、ランナーが Offline:ランナーをもう一度動かし(Gitea なら
gitea-runner daemon)、サーバーに届くかを確かめます。ランナーが仕事を取りに来た時点で、待っていたジョブは取られます。やり直しは要りません。 - どのランナーもラベルを持っていない:ランナーにラベルを足すか、
runs-onを直します。GitHub 向けに書いたワークフローは、たいていruns-on: ubuntu-latestで、その名前のラベルを持つランナーが要ります。Forgejo は、GitHub のランナーに似せるラベルとしてubuntu-latest:docker://node:ltsのような形を挙げています。Gitea では設定ファイルのrunner.labels(か--labels)に書いてランナーを再起動します。ランナーは起動のときにラベルをサーバーへ知らせます。Forgejo では、ランナーの設定ファイルのrunner: labels:の下に並べます。 - Codeberg では:Codeberg が用意しているランナーのラベルは
codeberg-tiny・codeberg-small・codeberg-medium(それぞれ-lazy付きもある)で、提供は限られています。runs-on: ubuntu-latestは、そのラベルを持つ自分のランナーをつながない限り待ちます(codeberg.org/actions/meta・Codeberg の説明)。 - runs-on を直した後:直しは新しい実行から効きます。Gitea のやり直しは、ジョブをラベルごとそのまま写します(rerun.go)。コミットを push するか、
workflow_dispatchのあるワークフローなら手で始め、待ったままの実行は取り消します。
IntelliJ IDEA で Forgejo・Gitea の Actions を見るなら
Pipeline Inbox for Forgejo and Gitea は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。Forgejo・Gitea のリポジトリの実行を、ジョブとログと一緒に出します。ランナーを待っているジョブは、実行のジョブの一覧で「順番待ち」と出ます。ログは開いたまま後を追うので、ランナーがジョブを取るとすぐ最初の行が出ます。1.0.1 からは、待っているジョブが求めるラベル(runs-on)も出します。実行・ジョブ・ログは無料、やり直し・取り消し・ワークフローの開始は Pro(月 US$1.50・30日間の無料試用つき)です。画面は日本語です。
Forgejo・Gitea・Codeberg はそれぞれの持ち主の名前、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは Forgejo プロジェクト・Codeberg e.V.・Gitea プロジェクト・JetBrains のいずれとも提携しておらず、承認も受けていません。
ほかに:ワークフローを手で始められない · Gitea の Actions の API の「token is required」 · ジョブのログの期限切れ · IntelliJ IDEA・PyCharm で Forgejo・Gitea の Actions を見る方法の比較 · English