GitHub actions/runner with build support for RISC-V 64-bit Linux systems.
This fork provides a self-hosted GitHub Actions runner compiled natively for linux-riscv64 (until official maintainers start accepting RISC-V PRs). Because the official Actions team does not publish RISC-V binaries, this project patches the upstream source to produce a fully self-contained runner that can be deployed directly on RISC-V hardware or emulated environments.
The build pipeline:
- Uses .NET 10.0.102 SDK cross-compiled for RISC-V (by @filipnavara). Because older .NET versions dont have support for RISC-V and throw errors and bugs after a certain time of connection (famous issues resolved by using .NET 10 is this and this). Check this issue on official .NET repo for RISC-V support in .NET
- Targets
net8.0with patched SDK metadata to unlock AppHost generation forlinux-riscv64 - Bundles RISC-V builds of Node.js 20 and Node.js 24 for action execution
- Disables the runner's built-in auto-updater (no official RISC-V packages exist upstream to update to)
- Built on Milk-V Pioneer Box and Debian Trixie in native RISC-V architecture
All the changes are added in the worklfow. Check this workflow for details on how this package is built.
Download the latest release from Releases
mkdir actions-runner && cd actions-runner
tar xzf ../actions-runner-linux-riscv64-X.X.X.tar.gz./config.sh --url https://github.com/YOUR-ORG/YOUR-REPO --token YOUR-RUNNER-TOKENYou can generate a runner token from Settings → Actions → Runners → New self-hosted runner in your GitHub repository or organization.
# Interactive (foreground)
./run.sh
# As a systemd service (recommended for production)
sudo ./svc.sh install
sudo ./svc.sh start| Requirement | Details |
|---|---|
| CPU | RISC-V 64-bit (RV64GC or compatible) |
| OS | Linux (Ubuntu 22.04+ or Debian 12+ recommended) |
| Disk | ~500 MB for the runner + job workspace |
| .NET runtime | Bundled — no separate installation required |
| Node.js | Bundled (v20 and v24) — no separate installation required |
This project is built entirely on a native RISC-V 64 GitHub Actions runner (self-hosted). The workflow performs the following steps:
SDK Setup
- Downloads
.NET 10.0.102forlinux-riscv64from filipnavara's unofficial RISC-V .NET port. - Synthesizes
net8.0runtime packs (Microsoft.NETCore.App,Microsoft.AspNetCore.App, andMicrosoft.NETCore.App.Host) by copying thenet10.0packs and registering them under version8.0.23. - Patches
Microsoft.NETCoreSdk.BundledVersions.propsto registerlinux-riscv64andlinux-musl-riscv64as valid AppHost and RuntimePack targets fornet8.0.
Source Patches
dev.sh— addsriscv64architecture detection and updates the SDK version reference.SelfUpdater.cs/SelfUpdaterV2.cs— disables the auto-update logic entirely, since nolinux-riscv64packages exist on the official GitHub releases page. Without this patch, the runner would crash or cancel the running jobs attempting to self-update.VarUtil.cs— injects a runtime check usingRuntimeInformation.ProcessArchitectureto correctly identify the RISC-V architecture and return"RISCV64"before the existing switch statement runs.- In all
.csprojfiles,linux-riscv64is appended to the<RuntimeIdentifiers>list.
Node.js Bundling
- Node.js 20 (
v20.9.0) is sourced from unofficial-builds.nodejs.org. - Node.js 24 (
v24.7.0) is sourced from @alitariq4589's nodejs-riscv releases.
Output
- A self-contained
actions-runner-linux-riscv64-{version}.tar.gzpackage published as a GitHub Release and build artifact.
- No auto-update. The runner's self-update mechanism is permanently disabled. To update, download and redeploy a new release from this repository.
- Unofficial .NET runtime. The bundled .NET runtime is not an official Microsoft build (even though there are no changes added to the official source code). It is provided by the community RISC-V .NET port maintained by @filipnavara.
net8.0target on anet10.0SDK. The runtime packs are copied fromnet10.0and relabeled asnet8.0. Behavioral differences between these runtimes are possible but have not been observed to affect runner functionality in testing.
| Project | Link |
|---|---|
| GitHub Actions Runner (upstream) | https://github.com/actions/runner |
| .NET for RISC-V (filipnavara), Many Thanks :) | https://github.com/filipnavara/dotnet-riscv |
| Node.js unofficial RISC-V builds | https://unofficial-builds.nodejs.org |
| Node.js 24 for RISC-V (alitariq4589) | https://github.com/alitariq4589/nodejs-riscv |
This project inherits the MIT License from the upstream actions/runner repository. All patches and additions in this fork are provided under the same license.
Found an issue in this build? I will be happy to discuss. Create an issue in this repository or join the Cloud-V's RISC-V community Discord server for engaging with us.