-
-
Notifications
You must be signed in to change notification settings - Fork 0
GitHub Runner Manual
This guide covers installing a GitHub Actions self-hosted runner directly on a Jetson device without Kubernetes.
- Jetson device running JetPack (L4T r36.4.0 or compatible)
- JetPack SDK components installed (Jetson Multimedia API, CUDA, Tegra libraries)
- Docker with NVIDIA runtime (recommended) or run jobs directly on the host
- Runner access granted by a maintainer (see Requesting Access)
Docker with the NVIDIA runtime ensures each job gets a clean environment with Tegra library injection.
sudo apt-get install -y docker.io nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart dockerVerify GPU access in Docker:
sudo docker run --rm --runtime=nvidia harbor.local/jetson/l4t-jetpack:r36.4.0 \
bash -c "ls /usr/lib/aarch64-linux-gnu/tegra/ && echo OK"Create a dedicated user for the runner:
sudo useradd -m -s /bin/bash github-runner
sudo usermod -aG docker github-runner
sudo usermod -aG video github-runnerGet the runner package from Settings > Actions > Runners > New self-hosted runner in the GitHub repository. Select Linux and ARM64.
sudo -u github-runner bash
cd /home/github-runner
mkdir actions-runner && cd actions-runner
curl -o actions-runner-linux-arm64.tar.gz -L \
https://github.com/actions/runner/releases/latest/download/actions-runner-linux-arm64-2.325.0.tar.gz
tar xzf actions-runner-linux-arm64.tar.gzCheck the GitHub Actions Runner releases for the latest ARM64 version.
Register with the repository using the token from GitHub:
./config.sh \
--url https://github.com/gjrtimmer/jetson-ffmpeg \
--token <YOUR_REGISTRATION_TOKEN> \
--name "jetson-<variant>" \
--labels "self-hosted,jetson,<variant>" \
--work "_work" \
--runasserviceReplace <variant> with your hardware label (e.g. orin-nx, agx, nano).
Get the registration token from Settings > Actions > Runners > New self-hosted runner.
sudo ./svc.sh install github-runner
sudo ./svc.sh startVerify:
sudo ./svc.sh statusThe runner needs access to NVIDIA libraries. Create an environment file:
cat <<'EOF' | sudo tee /home/github-runner/actions-runner/.env
NVIDIA_VISIBLE_DEVICES=all
NVIDIA_DRIVER_CAPABILITIES=all
LD_LIBRARY_PATH=/usr/lib/aarch64-linux-gnu/tegra:/usr/local/cuda/lib64
EOFRestart the service:
sudo ./svc.sh stop
sudo ./svc.sh startCheck the runner appears in GitHub:
- Go to Settings > Actions > Runners
- Runner should show as idle with labels
self-hosted,jetson, and your variant
Quick local test:
ls /usr/lib/aarch64-linux-gnu/tegra/libnvv4l2.so && echo "Tegra libs OK"Self-hosted runners for private repositories must be added by a maintainer:
- Open an issue using the GitHub Runner Token Request template
- A maintainer will provide the registration token or add your account to the runner group
- Once approved, follow this guide from step 3
GitHub releases new runner versions regularly. To update:
cd /home/github-runner/actions-runner
sudo ./svc.sh stop
curl -o actions-runner-linux-arm64.tar.gz -L \
https://github.com/actions/runner/releases/latest/download/actions-runner-linux-arm64-2.325.0.tar.gz
tar xzf actions-runner-linux-arm64.tar.gz
sudo ./svc.sh startThe runner also auto-updates during job execution when GitHub releases a new version.
- NVIDIA Container Toolkit is not installed or not configured for Docker
- Run:
sudo nvidia-ctk runtime configure --runtime=docker && sudo systemctl restart docker
- Check runner labels match the job
runs-onin.github/workflows/ci.yml - HW test jobs need labels:
self-hosted,jetson, AND<variant> - Build/patch jobs use
ubuntu-latest— no self-hosted runner needed
- The
github-runneruser needs access to Docker and NVIDIA devices - Verify groups:
groups github-runnershould includedockerandvideo - Restart the service after group changes
- Tegra libraries not available in the job environment
- Verify
LD_LIBRARY_PATHincludes/usr/lib/aarch64-linux-gnu/tegrain the runner's.env - Check
NVIDIA_VISIBLE_DEVICES=allis set
- Ensure the service is enabled:
sudo ./svc.sh install github-runner - Verify:
systemctl is-enabled actions.runner.*.service
🏠 Home · 📦 Repository · 🐞 Issues · 🏷 Releases · 📋 README · 📝 CHANGELOG
Documentation lives in this wiki. To change a doc, edit the relevant wiki page (clone jetson-ffmpeg.wiki.git) — the docs/ folder in the repo has been retired.
📦 Usage & Runtime
❓ FAQ
- Overview
- Hardware & Platform
- Versions & Compatibility
- Build & Install
- Performance
- Features & Fork Differences
🛠 Development
⚙️ CI / Infrastructure
- GitHub Actions
- GitLab CI
- GitHub Runner — Manual
- GitHub Runner — Kubernetes
- GitLab Runner — Manual
- GitLab Runner — Kubernetes
- Release Process
🔬 Project / Fork Analysis