GitHub workflows
run.cloud CI reads your repository at the commit SHA and claims jobs that opt in with:run.cloud, run-cloud, or a list that includes one of those
labels (for example [self-hosted, runcloud]).
Every other job is ignored by run.cloud and can keep running on GitHub Actions
as usual.
First workflow
/bin/sh with a portable setup, so common images such as
node:22 (Debian dash) work without requiring bash.
Why on: workflow_dispatch?
GitHub Actions does not know about a runcloud runner. If you set
on: pull_request without care, Actions may show a job waiting for a
self-hosted runner that will never start.
run.cloud does not use GitHub Actions to schedule work. The GitHub App
receives pull_request / push webhooks and runs opted-in jobs itself.
Using workflow_dispatch (or another trigger that does not auto-queue on PR)
keeps the Actions UI clean while run.cloud still executes checks on every
relevant push and PR.
Path filters for run.cloud are set with RUNCLOUD_PATHS (or native paths,
see configuration), not only with GitHub’s on.paths.
Multi-step Node job
Working directory
Useworking-directory on a step (or native workdir) for monorepo packages:
Multiple jobs
Each job becomes its own Check Run:run.cloud / unit, run.cloud / lint.
.runcloud/ci.yml.
Multi-line scripts
Path filters and skipped checks
WhenRUNCLOUD_PATHS (or job paths) is set and none of the changed files
match, run.cloud still posts a Check Run with conclusion success and title
Skipped. That keeps required checks from blocking unrelated PRs.
Images
Set the sandbox image withcontainer: (string or { image: ... }) or native
image::
Branch protection
In GitHub → Settings → Branches → Branch protection rules, add required status checks such as:run.cloud / unitrun.cloud / lint
name: if set) after the run.cloud /
prefix.
Re-running a check
Use Re-run on the Check Run in the GitHub UI. run.cloud receives thecheck_run re-request and enqueues that job again for the same SHA.