Skip to content

infra: Railway Vivado self-hosted GH Actions runner #620

@gHashTag

Description

@gHashTag

Goal

Provision a managed x86_64 Linux runner with Vivado 2025.2 installed, registered as a self-hosted GitHub Actions runner against this repo. Unblocks PR #604 (Vivado-CI with UART telemetry) and tok/s measurement on silicon.

Constraints (verified)

  • M4 MacBook Pro (228 GB SSD, ~11 GB free, ARM64) cannot host Vivado: needs ~110 GB and x86_64 Linux.
  • Vivado_2025.2_Lin64.bin (347 MB installer) already in ~/Downloads on Mac.
  • Project policy: no .sh / .py anywhere — Rust only (inline awk in YAML is OK).

Solution shipped in this branch

infra/railway-vivado-runner/:

  • Dockerfile — Ubuntu 22.04 + Vivado deps + GH Actions runner v2.319.1
  • src/main.rs — Rust entrypoint that registers the runner and exec's run.sh (project-supplied GH binary)
  • Cargo.toml — entrypoint crate
  • railway.toml — service definition with 3 persistent volumes (130 GB Xilinx, 1 GB installer, 20 GB work)
  • README.md — step-by-step Railway deploy (volumes, env vars, Vivado silent install)

.github/workflows/vivado-self-hosted.yml:

  • runs-on: [self-hosted, vivado, x86_64, linux]
  • Builds t27c, generates Verilog from .t27 specs, runs Vivado synth, optionally runs UART smoke if DLC-10 attached
  • Triggers on PR + manual dispatch with design selection (blinky / gf16 / phi_heartbeat) and UART toggle

Cost estimate

Railway Pro, 8 vCPU / 32 GB / 150 GB volume: ~$35–55/month active.

Next actions for operator

  1. railway login && railway init from infra/railway-vivado-runner/
  2. Provision 3 volumes per README
  3. railway volume push ~/Downloads/Vivado_2025.2_Lin64.bin /opt/installer/
  4. Get fresh runner registration token from repo Settings → Actions → Runners
  5. Set 4 env vars, railway up
  6. One-time Vivado silent install via railway run
  7. Verify runner shows Idle / Online in repo settings

Verification path

  • Trigger Vivado workflow with design=blinky, expect bitstream + utilization summary in artifacts
  • If DLC-10 attached, expect tok_s.txt with measured tokens/sec

Refs #604

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions