Lesstep
Forgejo · Codeberg · Gitea · Actions runners · Checked October 28, 2026

Forgejo and Gitea Actions: "No matching online runner with label"

The job names a label in runs-on that no runner connected right now has. Forgejo and Gitea do not fail such a job: it stays queued until a runner with every label in its runs-on comes online, or until someone cancels it. Give a runner that label, start the runner that has it, or change runs-on to a label your runners have.

Where the message appears

The words are the same in both, with the labels in place of the placeholder:

No matching online runner with label: ubuntu-latest

Through the API there is no error at all: the job is queued on Gitea and waiting on Forgejo, and stays so. Gitea also returns the labels the job asks for, as labels on the job (repo_actions.go).

How a runner is matched to a job

Get the job running

  1. See which runners there are, with their labels and status: in the repository, Settings, Actions, Runners (/{owner}/{repository}/settings/actions/runners). The list includes the runners of the owner and of the server. Organizations have the same page under /org/{org}/settings/actions/runners, your account under /user/settings/actions/runners, server administrators under /admin/actions/runners. Each runner shows Idle, Active or Offline, and its labels (the same pages in Gitea).
  2. The label is there, but the runner is Offline: start the runner again (on Gitea, gitea-runner daemon) and check that it can reach the server. The waiting job is taken as soon as the runner asks for work; nothing needs to be run again.
  3. No runner has the label: add it to a runner, or change runs-on. A workflow written for GitHub usually says runs-on: ubuntu-latest, which needs a runner with a label of that name; Forgejo suggests a label such as ubuntu-latest:docker://node:lts to mimic GitHub runners. On Gitea, set runner.labels in the configuration file (or --labels) and restart the runner, which reports its labels at startup. On Forgejo, labels are listed under runner: labels: in the configuration file of the runner.
  4. On Codeberg: the runners Codeberg hosts have the labels codeberg-tiny, codeberg-small and codeberg-medium (each also with -lazy), and are offered in a limited way; runs-on: ubuntu-latest waits unless you connect a runner of your own with that label (codeberg.org/actions/meta, Codeberg documentation).
  5. After changing runs-on: the change applies to new runs. On Gitea a re-run copies the jobs as they were, labels included (rerun.go), so push a commit, or start the workflow by hand if it has workflow_dispatch, and cancel the run that is still waiting.

Forgejo and Gitea Actions in IntelliJ IDEA

Pipeline Inbox for Forgejo and Gitea, a plugin by Lesstep for JetBrains IDEs 2024.1 or later, shows the runs of your Forgejo and Gitea repositories with their jobs and logs. A job that waits for a runner is marked queued in the jobs of its run, and its log stays open and follows it, so the first lines appear as soon as a runner takes the job. Since version 1.0.1 it also shows the labels the waiting job asks for (its runs-on). The runs, jobs and logs are free; re-running, cancelling and starting workflows are Pro (US$1.50 a month, with a 30-day trial).

Get it on JetBrains Marketplace

Forgejo, Gitea and Codeberg are names of their respective owners; IntelliJ IDEA is a trademark of JetBrains s.r.o. This page is not affiliated with or endorsed by the Forgejo project, Codeberg e.V., the Gitea project or JetBrains.

More: Workflow dispatch refused · Gitea Actions API "token is required" · Job log expired · Forgejo Actions and Gitea Actions in JetBrains IDEs · 日本語