Configure Your Workflow
Once the RISE RISC-V Runners GitHub App is installed (organization or personal), use RISC-V runners by setting the runs-on label in your workflow file.
Minimal workflow
name: RISC-V CI
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-24.04-riscv
steps:
- uses: actions/checkout@v4
- run: uname -m # riscv64
- run: gcc --version # native riscv64-linux-gnu-gcc
- run: make
Save this as .github/workflows/riscv.yml in your repository.
Available labels
| Label | Description |
|---|---|
ubuntu-24.04-riscv | Standard RISC-V runner, Ubuntu 24.04 |
ubuntu-26.04-riscv | Standard RISC-V runner, Ubuntu 26.04 |
See the Runner Labels Reference for full hardware specs.
Pre-installed tools
The runner image aims to mirror the standard GitHub Actions Ubuntu runner. Highlights:
- Languages and runtimes: Python 3.10–3.14 (including free-threaded variants), Node.js, Go, Rust, Java (Temurin 17/21/25), PHP, Ruby, Perl, Lua, R.
- Compilers: GCC, G++, Clang.
- Build tools: Make, CMake, Ninja, Autoconf, Automake, Libtool, Gradle, Maven, Ant.
- Container tooling: Docker (CLI + daemon, Buildx, Compose), podman, buildah, skopeo, runc, kubectl.
- Utilities: Git, curl, wget, jq, shellcheck, rsync.
jobs:
docker:
runs-on: ubuntu-24.04-riscv
steps:
- uses: actions/checkout@v4
- run: docker build -t myapp .
- run: docker run myapp
See riseproject-dev/riscv-runner-images for the complete list and versions-map.json for pinned versions.
Runner lifecycle
Runners are ephemeral. Each job gets a clean environment:
- A fresh pod is provisioned when your job is queued
- The pod registers as a just-in-time runner with GitHub
- Your job executes
- The pod is deleted after completion
There is no persistent state between jobs.
Sample repository
See riscv-runner-sample for a working example.